using Rigging.BodyPart; using Rigging.Inputs; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Rigging.Action { public class Rotation : RiggingActionBase { public Transform rotationTarget; public Rigidbody hip; public Rigidbody torso; public Rigidbody head; public float rotationTorque; public float clamp; public InputHandler input; //private PlayerDeath death; [HideInInspector] public float hipCorrectionAmount; public bool useHip = true; public bool useTorso = true; public bool useHead = true; protected override void OnStart() { rotationTarget = transform.root.GetComponentInChildren().transform; hip = player.body.hip.rigidbody; torso = player.body.torso.rigidbody; head = player.body.head.rigidbody; input = transform.root.GetComponentInChildren(); } protected override void OnFixedUpdate() { float num = head.transform.InverseTransformPoint(rotationTarget.position).x; float num2 = torso.transform.InverseTransformPoint(rotationTarget.position).x; hipCorrectionAmount = hip.transform.InverseTransformPoint(hip.transform.position + input.lastInputDirection * 10f).x; float muscleFunction = 1; float num3 = 0.3f; if (input.inputMovementDirection.magnitude > 0.1f) { num3 = 1f; } if (clamp != 0f) { hipCorrectionAmount = Mathf.Clamp(hipCorrectionAmount, 0f - clamp, clamp); num = Mathf.Clamp(num, 0f - clamp, clamp); num2 = Mathf.Clamp(num2, 0f - clamp, clamp); } if (useHip) { hip.AddTorque(Vector3.up * muscleFunction * rotationTorque * num3 * hipCorrectionAmount, ForceMode.Acceleration); } if (useTorso) { torso.AddTorque(Vector3.up * muscleFunction * rotationTorque * num2, ForceMode.Acceleration); } if (useHead) { head.AddTorque(Vector3.up * muscleFunction * rotationTorque * num, ForceMode.Acceleration); } } } }