diff options
Diffstat (limited to 'ActiveRagdoll/Assets/TABG/Scripts/Action/Rotation.cs')
-rw-r--r-- | ActiveRagdoll/Assets/TABG/Scripts/Action/Rotation.cs | 71 |
1 files changed, 65 insertions, 6 deletions
diff --git a/ActiveRagdoll/Assets/TABG/Scripts/Action/Rotation.cs b/ActiveRagdoll/Assets/TABG/Scripts/Action/Rotation.cs index 9652670..90515d7 100644 --- a/ActiveRagdoll/Assets/TABG/Scripts/Action/Rotation.cs +++ b/ActiveRagdoll/Assets/TABG/Scripts/Action/Rotation.cs @@ -1,3 +1,5 @@ +using Rigging.BodyPart; +using Rigging.Inputs; using System.Collections; using System.Collections.Generic; using UnityEngine; @@ -7,17 +9,74 @@ namespace Rigging.Action public class Rotation : RiggingActionBase { - // Start is called before the first frame update - void Start() + + 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() { - + //death = GetComponent<PlayerDeath>(); + rotationTarget = transform.root.GetComponentInChildren<RotationTarget>().transform; + hip = player.body.hip.rigidbody; + torso = player.body.torso.rigidbody; + head = player.body.head.rigidbody; + input = transform.root.GetComponentInChildren<InputHandler>(); } - // Update is called once per frame - void Update() + 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 = death.muscleFunction; + 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); + } } + } }
\ No newline at end of file |