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/StepHandler.cs | |
parent | 3f53966a0fdc96f1e32d7d5f930c5cac6d4dfb29 (diff) |
*misc
Diffstat (limited to '_ActiveRagdoll/Handlers/StepHandler.cs')
-rw-r--r-- | _ActiveRagdoll/Handlers/StepHandler.cs | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/_ActiveRagdoll/Handlers/StepHandler.cs b/_ActiveRagdoll/Handlers/StepHandler.cs new file mode 100644 index 0000000..fd8110b --- /dev/null +++ b/_ActiveRagdoll/Handlers/StepHandler.cs @@ -0,0 +1,53 @@ +using UnityEngine; + +public class StepHandler : MonoBehaviour +{ + public float staticCounter; + + public Step[] steps; + + public bool isLeft; + + private float counter; + + private Transform leftLeg; + + private Transform rightLeg; + + private AnimationHandler animationHandler; + + private Transform hip; + + private void Start() + { + if (staticCounter == 0f) + { + leftLeg = GetComponentInChildren<LegLeft>().transform; + rightLeg = GetComponentInChildren<LegRight>().transform; + animationHandler = GetComponent<AnimationHandler>(); + hip = GetComponentInChildren<Hip>().transform; + } + } + + private void Update() + { + counter += Time.deltaTime; + if (staticCounter != 0f) + { + if (counter > staticCounter) + { + Switch(); + } + } + else if (counter > steps[animationHandler.animationState].minTime && (steps[animationHandler.animationState].minAngle == 0f || steps[animationHandler.animationState].minAngle < Vector3.Angle(leftLeg.forward, rightLeg.forward)) && isLeft == hip.InverseTransformPoint(leftLeg.position + leftLeg.forward).z > hip.InverseTransformPoint(rightLeg.position + rightLeg.forward).z) + { + Switch(); + } + } + + private void Switch() + { + isLeft = !isLeft; + counter = 0f; + } +} |