using Rigging.BodyPart; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Rigging.Data { //Player 更新脚步切换状态,返回哪个脚在前,哪个在后,配合AnimationObject使用 public class StepHandler : RiggingDataBase { public float staticCounter; public Step steps; public bool isLeft;//左脚还是右脚在前面 private float counter; private Transform leftLeg; private Transform rightLeg; private AnimationHandler animationHandler; private Transform hip; protected override void OnStart() { if (staticCounter == 0f) { leftLeg = player.body.legLeft.transform; rightLeg = player.body.legRight.transform; // animationHandler = GetComponent(); hip = player.body.hip.transform; } } protected override void OnUpdate() { counter += Time.deltaTime; if (staticCounter != 0f) { if (counter > staticCounter) { Switch(); } } else if (counter > steps.minTime && (steps.minAngle == 0f || steps.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; } } }