diff options
author | chai <215380520@qq.com> | 2024-03-16 12:39:34 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2024-03-16 12:39:34 +0800 |
commit | 793c4eae324d394f19a8bac66a803bf03a67ae9d (patch) | |
tree | 629b5d87bdf0fd004b1950e42e2427bc884f1059 /_ActiveRagdoll/Handlers/MovementDataHandler.cs | |
parent | 3f53966a0fdc96f1e32d7d5f930c5cac6d4dfb29 (diff) |
*misc
Diffstat (limited to '_ActiveRagdoll/Handlers/MovementDataHandler.cs')
-rw-r--r-- | _ActiveRagdoll/Handlers/MovementDataHandler.cs | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/_ActiveRagdoll/Handlers/MovementDataHandler.cs b/_ActiveRagdoll/Handlers/MovementDataHandler.cs new file mode 100644 index 0000000..18d43f5 --- /dev/null +++ b/_ActiveRagdoll/Handlers/MovementDataHandler.cs @@ -0,0 +1,92 @@ +using UnityEngine; + +public class MovementDataHandler : MonoBehaviour +{ + [HideInInspector] + public Vector3 groundedForward; + + [HideInInspector] + public Vector3 right; + + [HideInInspector] + public Vector3 left; + + [HideInInspector] + public Vector3 groundedBack; + + private Transform hip; + + private Transform torso; + + public Transform rotationTarget; + + [HideInInspector] + public float slopeStrenght; + + public float slopeVelocityStrenght; + + [HideInInspector] + public float sinceJump = 1f; + + [HideInInspector] + public Vector3 groundNormal; + + private InputHandler inputHandler; + + private Transform leftKnee; + + private Transform rightKnee; + + private void Start() + { + inputHandler = GetComponent<InputHandler>(); + hip = GetComponentInChildren<Hip>().transform; + torso = GetComponentInChildren<Torso>().transform; + if (!rotationTarget) + { + rotationTarget = GetComponentInChildren<RotationTarget>().transform; + } + KneeLeft componentInChildren = GetComponentInChildren<KneeLeft>(); + if ((bool)componentInChildren) + { + leftKnee = componentInChildren.transform; + } + KneeRight componentInChildren2 = GetComponentInChildren<KneeRight>(); + if ((bool)componentInChildren2) + { + rightKnee = componentInChildren2.transform; + } + } + + private void Update() + { + sinceJump += Time.deltaTime; + groundedForward = rotationTarget.forward; + groundedForward.y = slopeStrenght * 1f; + groundedForward = groundedForward.normalized; + groundedBack = -groundedForward; + right = rotationTarget.right; + left = -rotationTarget.right; + slopeStrenght = Mathf.Lerp(slopeStrenght, 0f, Time.deltaTime * 1f); + Debug.DrawLine(hip.position, hip.position + groundedForward * 10f); + } + + public void SetSlope(Vector3 normal) + { + groundNormal = normal; + slopeStrenght = Vector3.Cross(rotationTarget.right, normal).y; + Vector3 lhs = Vector3.Cross(Vector3.up, inputHandler.inputMovementDirection); + slopeVelocityStrenght = Vector3.Cross(lhs, normal).y; + } + + public float GetSmallestLegAngle() + { + float num = Vector3.Angle(leftKnee.forward, Vector3.down); + float num2 = Vector3.Angle(rightKnee.forward, Vector3.down); + if (num < num2) + { + return num; + } + return num2; + } +} |