summaryrefslogtreecommitdiff
path: root/_ActiveRagdoll/MovementDataHandler.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2024-03-13 11:38:18 +0800
committerchai <215380520@qq.com>2024-03-13 11:38:18 +0800
commit134f1deb971b0514a26e04e23926f91983a5497f (patch)
treed790681bb000c07abae9f557a7d0ef2442fac467 /_ActiveRagdoll/MovementDataHandler.cs
parent6ce8b9e22fc13be34b442c7b6af48b42cd44275a (diff)
* move
Diffstat (limited to '_ActiveRagdoll/MovementDataHandler.cs')
-rw-r--r--_ActiveRagdoll/MovementDataHandler.cs92
1 files changed, 92 insertions, 0 deletions
diff --git a/_ActiveRagdoll/MovementDataHandler.cs b/_ActiveRagdoll/MovementDataHandler.cs
new file mode 100644
index 0000000..18d43f5
--- /dev/null
+++ b/_ActiveRagdoll/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;
+ }
+}