using System.Collections; using System.Collections.Generic; using UnityEngine; public partial class SaionjiScript : MonoBehaviour { HitBoxTest hitbox; Animator animator; int IdleHash; // Start is called before the first frame update void Start() { animator = GetComponent(); // SetupAbilities(); IdleHash = Animator.StringToHash("Idle Fight 0"); } private void OnCollisionEnter(Collision collision) { Debug.Log("OnCollisionEnter()"); } private void OnTriggerEnter(Collider other) { Debug.Log("OnTriggerEnter()"); } private void Update() { //AnimatorStateInfo info = animator.GetCurrentAnimatorStateInfo(0); //if(info.normalizedTime > 0.8) //{ // animator.CrossFade(IdleHash, 0.11f); //} } // 更新顺序: // internal animator update -> OnAnimatorMove() -> physics // 角色最后的位置以物理系统为准(如果加入物理系统的话) // 如果后续有物理处理,会重写transform // 对于后续不受物理管理的动作,不需要修改transform void OnAnimatorMove() { Animator animator = GetComponent(); // 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; } } }