diff options
Diffstat (limited to 'ActiveRagdoll/Assets/TABG/Scripts/Action/Standing.cs')
-rw-r--r-- | ActiveRagdoll/Assets/TABG/Scripts/Action/Standing.cs | 62 |
1 files changed, 38 insertions, 24 deletions
diff --git a/ActiveRagdoll/Assets/TABG/Scripts/Action/Standing.cs b/ActiveRagdoll/Assets/TABG/Scripts/Action/Standing.cs index dd9a62c..0c963ab 100644 --- a/ActiveRagdoll/Assets/TABG/Scripts/Action/Standing.cs +++ b/ActiveRagdoll/Assets/TABG/Scripts/Action/Standing.cs @@ -1,3 +1,4 @@ +using Rigging.Data; using System.Collections; using System.Collections.Generic; using UnityEngine; @@ -9,37 +10,50 @@ namespace Rigging.Action public class Standing : RiggingActionBase { - public Rigidbody[] rigsToLift; //Head, Torso + public RigidbodyMovement[] rigsToLift; //Head, Torso - public float force; + public float offset = 0.95f;//0.95 + + private float muscleMultiplier = 1f;//1 + + private float standingMulti = 1f; + + private StandingDataHandler standingData; + + public AnimationCurve curve; + + protected override void OnStart() + { + standingData = player.status.standingData; + + } protected override void OnFixedUpdate() { - foreach (var rig in rigsToLift) - { - rig.AddForce(Vector3.up * force, ForceMode.Acceleration); - } + Stand(curve); } - //private void Stand(AnimationCurve curve) - //{ - // float num = 0f; - // if (input.isCrouching) - // { - // num = 0.35f; - // } - // float max = forceCapCurve.Evaluate(forceCapTime); // 力的上限 - // RigidbodyMovment[] array = rigsToLift; - // foreach (RigidbodyMovment 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); - // } - //} + private void Stand(AnimationCurve curve) + { + //float num = 0f; + //if (input.isCrouching) + //{ + // num = 0.35f; + //} + //float max = forceCapCurve.Evaluate(forceCapTime); // 力的上限 + float num = 0; + float max = 100; + 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); + } + } } |