diff options
Diffstat (limited to 'Assets/Scripts/Test/SaionjiScript.cs')
-rw-r--r-- | Assets/Scripts/Test/SaionjiScript.cs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/Assets/Scripts/Test/SaionjiScript.cs b/Assets/Scripts/Test/SaionjiScript.cs index c252645b..a3216dd5 100644 --- a/Assets/Scripts/Test/SaionjiScript.cs +++ b/Assets/Scripts/Test/SaionjiScript.cs @@ -37,4 +37,27 @@ public partial class SaionjiScript : MonoBehaviour //}
}
+ // 更新顺序:
+ // internal animator update -> OnAnimatorMove() -> physics
+ // 角色最后的位置以物理系统为准(如果加入物理系统的话)
+ // 如果后续有物理处理,会重写transform
+ // 对于后续不受物理管理的动作,不需要修改transform
+ void OnAnimatorMove()
+ {
+ Animator animator = GetComponent<Animator>();
+
+ // animator.deltaPosition和animator.deltaRotation是animator做的root motion后的结果
+ // 在后面做一个硬性约束z=0,将角色限制在z=0平面上
+ if (animator)
+ {
+ Vector3 position = transform.position;
+ position.x += animator.deltaPosition.x;
+ position.y += animator.deltaPosition.y;
+ transform.position = position;
+
+ // animation clip导入设置旋转一般上设置为baked inpose,不需要手动限制
+ transform.rotation *= animator.deltaRotation;
+ }
+ }
+
}
|