您好,欢迎来到微智科技网。
搜索
您的当前位置:首页记一个Playable与Animantor的冲突

记一个Playable与Animantor的冲突

来源:微智科技网

事情发生的原因是在我的一个项目中,该项目使用了TimeLine作为技能编辑器,并使用PlayableDirector和Animantor以及Animancer进行播放,且由代码重载OnAnimatorMove方法并使用Animancer.Animator.deltaPosition来进行位置信息的更新。

Bug发生的情况是:当我暂停PlayableDirector的播放再恢复时,发现获取的DeltaPosition的值产生了错误,根据官方文档,Animator.deltaPosition是自上一帧进行计算的,也就是说很可能对PlayableDirector的控制无法同时控制Animator,而且无法对Animator直接进行Speed的修改。

尝试分别对三种组件进行修改,依旧无法实现正确获取Animator的值,最后的解决方案是直接修改playableDirector.playableGraph.GetRootPlayable(0).SetSpeed(0)。通过修改TimeLine的Playable播放速度来控制Animator,终于使得deltaPosition值获取正常。

    private IEnumerator StopAnim(int time)
    {
        IsAnim = false;
        _playableDirector.playableGraph.GetRootPlayable(0).SetSpeed(0);
        _riginDeltaPosition = _Animancer.Animator.deltaPosition;
        yield return new WaitForSeconds(Time.fixedDeltaTime * time);
        _playableDirector.playableGraph.GetRootPlayable(0).SetSpeed(1);
        IsAnim = true;
        _stopAnimCoroutine = null;
    }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务