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(); } }
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(); } }