コード例 #1
0
        public override void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
        {
            if (stateInfo.shortNameHash == h_ToCover)
            {
                Vector3 lerpPos = calced_GroundPoint + calced_CoverNormal * CCoverProps.distFromWall;

                transform.position = Vector3.Lerp(transform.position, lerpPos, Time.deltaTime * CCoverProps.toCoverPositionLerpSpeed);
                transform.forward  = Vector3.Lerp(transform.forward,
                                                  Quaternion.Euler(0,
                                                                   CCoverProps.yRotationFixer * Mathf.Sign(animator.GetFloat(cap_CoverSide)), 0) * calced_CoverNormal,
                                                  Time.deltaTime * CCoverProps.toCoverRotationLerpSpeed);
            }
            else if (stateInfo.shortNameHash == h_CoverLocom)
            {
                transform.forward = Vector3.Lerp(transform.forward,
                                                 Quaternion.Euler(0,
                                                                  CCoverProps.yRotationFixer * Mathf.Sign(animator.GetFloat(cap_CoverSide)), 0) * calced_CoverNormal,
                                                 Time.deltaTime * CCoverProps.toCoverRotationLerpSpeed);

                Vector3 lerpPos = calced_GroundPoint + calced_CoverNormal * CCoverProps.distFromWall;
                transform.position = Vector3.Lerp(transform.position, lerpPos, Time.deltaTime * CCoverProps.toCoverPositionLerpSpeed);
                animator.ApplyBuiltinRootMotion();
            }
            else if (stateInfo.tagHash == ht_SwitchSide)
            {
                Vector3 lerpPos = calced_GroundPoint + calced_CoverNormal * CCoverProps.distFromWall;

                transform.position = Vector3.Lerp(transform.position, lerpPos, Time.deltaTime * CCoverProps.toCoverPositionLerpSpeed);
                transform.forward  = Vector3.Lerp(transform.forward,
                                                  Quaternion.Euler(0,
                                                                   CCoverProps.yRotationFixer * Mathf.Sign(animator.GetFloat(cap_CoverSide)), 0) * calced_CoverNormal,
                                                  Time.deltaTime * CCoverProps.toCoverRotationLerpSpeed);
            }
            else
            {
                animator.ApplyBuiltinRootMotion();
            }
        }
コード例 #2
0
        public override void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
        {
            if (IsMovingWithAgent)
            {
                if (MoveToTransformWithAgent)
                {
                    MoveToPosWithAgent = MoveToTransformWithAgent.position;
                }
                LocomotionWithAgent(animator, layerIndex, MoveToPosWithAgent, false);

                Vector3 position = animator.rootPosition;
                position.y = agent.nextPosition.y;
            }
            else
            {
                animator.ApplyBuiltinRootMotion();
            }
        }