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