Ejemplo n.º 1
0
    // 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);
    }