using UnityEngine; using System.Collections; public class PlayerMovement3D : MonoBehaviour { private Animator m_Animator; private Vector2 moveDir; private bool isRush; public Transform viewTarget; public FirstPersonCamera m_FPSCamera; private AnimatorStateInfo m_AnimatorState; // Use this for initialization void Awake () { InitGetCompoment(); ListenerInput(); } void InitGetCompoment(){ m_Animator = GetComponent(); } // Update is called once per frame void ListenerInput () { PlayerInput.Get(gameObject).onHorizontalInput += OnGetHorizontalMovementInput; PlayerInput.Get(gameObject).onVerticalInput += OnGetVerticalMovementInput; PlayerInput.Get(gameObject).onHorizontalInput += OnSetAnimatorSpeed; PlayerInput.Get(gameObject).onVerticalInput += OnSetAnimatorSpeed; } void OnGetHorizontalMovementInput(float dir){ m_Animator.SetFloat("Horizontal", dir); moveDir.x = dir; } void OnGetVerticalMovementInput(float dir){ m_Animator.SetFloat("Vertical", dir); moveDir.y = dir; } void OnSetAnimatorSpeed(float dir){ // GetMoveSpeedVector float moveSpeed = Vector2.SqrMagnitude(moveDir.normalized); // RushSpeed if (isRush){ moveSpeed *= 2; } m_Animator.SetFloat( "Speed", moveSpeed); } void OnAnimatorIK(int layerIndex) { m_AnimatorState = m_Animator.GetCurrentAnimatorStateInfo(0); bool inMove = m_AnimatorState.IsTag("LocoMotion"); if (viewTarget){ m_Animator.SetLookAtPosition(viewTarget.position); m_Animator.SetLookAtWeight(1.0f); } // Set FaceDir to Fix Turn if (m_FPSCamera){ m_Animator.SetFloat("FaceDir", m_FPSCamera.direction); } // WhenMove Rotate Character if (inMove){ transform.eulerAngles += new Vector3(0,m_FPSCamera.direction*Time.deltaTime*10,0) ; } } }