using UnityEngine; //Player Standing 动作-站立 public class Standing : MonoBehaviour { public RigidbodyMovment[] rigsToLift; //Head, Torso public AnimationCurve[] animationLiftCurves; private StandingDataHandler standingData; private AnimationHandler animationHandler; public float offset; private PlayerDeath death; private Strength str; private float muscleMultiplier = 1f; private float legAngleMultiplier; private MovementDataHandler moveData; private void Start() { death = GetComponent(); str = GetComponent(); standingData = GetComponent(); moveData = GetComponent(); animationHandler = GetComponent(); } private void FixedUpdate() { if (!death.dead) { muscleMultiplier = str.strength; if (standingData.isGrounded) { Stand(animationLiftCurves[animationHandler.animationState]); } } } private void Stand(AnimationCurve curve) { legAngleMultiplier = 1f; RigidbodyMovment[] array = rigsToLift; foreach (RigidbodyMovment rigidbodyMovment in array) { // 施加一个向上的力 rigidbodyMovment.rig.AddForce(Vector3.up * muscleMultiplier * rigidbodyMovment.force * legAngleMultiplier * curve.Evaluate(standingData.distanceToGround + offset + moveData.slopeVelocityStrenght * -0.2f), ForceMode.Acceleration); } } }