using Rigging.Data; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Windows; namespace Rigging.Action { // 动作-保持站立,给head和torso施加力 public class Standing : RiggingActionBase { public RigidbodyMovement[] rigsToLift; //Head, Torso public float offset = 0.95f;//0.95 private float muscleMultiplier = 1f;//1 private float standingMulti = 1f; private StandingDataHandler standingData; public AnimationParam curves; protected override void OnStart() { standingData = player.status.standingData; curves.SetPlayer(player); } protected override void OnFixedUpdate() { Stand(curves.current); } private void Stand(AnimationCurve curve) { //float num = 0f; //if (input.isCrouching) //{ // num = 0.35f; //} //float max = forceCapCurve.Evaluate(forceCapTime); // 力的上限 float num = 0; float max = 10000; RigidbodyMovement[] array = rigsToLift; foreach (RigidbodyMovement rigidbodyMovment in array) { // 施加一个向上的垂直向上的力,把角色吊起来 Vector3 forceDir = Vector3.up; float forceMagnitude = standingMulti * muscleMultiplier * rigidbodyMovment.force * Mathf.Clamp(curve.Evaluate(standingData.distanceToGround / base.transform.localScale.x + num + offset /*+ moveData.slopeVelocityStrenght * -0.2f*/), -100f, max); rigidbodyMovment.rig.AddForce( forceDir * forceMagnitude, ForceMode.Acceleration); } } } }