// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { float moveSpeed = 0f; float runFactor = animator.GetFloat(speedParameterHash); if (runFactor > 0.0001f) { if (runFactor > 0.30001) { //moveSpeed = Mathf.Lerp(walkSpeed, runSpeed, Mathf.Min(1f, (runFactor - Constants.controllerDirectionThresholdForWalk) / (Constants.controllerDirectionThresholdForRun - Constants.controllerDirectionThresholdForWalk))); moveSpeed = runSpeed; } else { moveSpeed = walkSpeed; } } else { moveSpeed = 0f; } if (moveSpeed > 0f) { Vector3 moveVector = Vector3.forward * moveSpeed * Time.deltaTime; //if (myRigidbody != null) //{ // moveVector = myTransform.TransformDirection(moveVector); // myRigidbody.MovePosition(myRigidbody.position + moveVector); //} //else animator.transform.Translate(moveVector, Space.Self); } float turnAngle = animator.GetFloat(turnParameterHash); animator.transform.eulerAngles = new Vector3(0f, CameraUtil.GetMainCameraForward().y + turnAngle, 0f); }