diff options
Diffstat (limited to '_ActiveRagdoll/Actions/StayInPlace.cs')
-rw-r--r-- | _ActiveRagdoll/Actions/StayInPlace.cs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/_ActiveRagdoll/Actions/StayInPlace.cs b/_ActiveRagdoll/Actions/StayInPlace.cs new file mode 100644 index 0000000..c8bdf4b --- /dev/null +++ b/_ActiveRagdoll/Actions/StayInPlace.cs @@ -0,0 +1,51 @@ +using UnityEngine; + +//Player StayInPlace 动作-移动到停止时停下来 +public class StayInPlace : MonoBehaviour +{ + private InputHandler input; + + public Rigidbody rig; // Hip + + public float force;// 100 + + private Vector3 stopPosition; + + private bool isBroken; + + private PlayerDeath death; + + private Strength str; + + private float strength = 1f; + + private void Start() + { + str = GetComponent<Strength>(); + input = GetComponent<InputHandler>(); + death = GetComponent<PlayerDeath>(); + stopPosition = rig.position; + } + + private void FixedUpdate() + { + if (death.dead) + { + return; + } + strength = str.strength; + if (input.inputMovementDirection.magnitude > 0.1f) // 移动 + { + stopPosition = rig.position + rig.velocity * 0.25f; + isBroken = false; + } + else if (!isBroken) // 移动到停下 + { + if (Vector3.Distance(stopPosition, rig.position) > 1f) + { + isBroken = true; + } + rig.AddForce((stopPosition - rig.position) * force * strength, ForceMode.Acceleration); + } + } +} |