From c9fc4fbbe205ff69fa20ded822b2214847b59726 Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Mon, 18 Mar 2024 10:03:48 +0800 Subject: *misc --- _ActiveRagdoll/Actions/StayInPlace.cs | 51 +++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 _ActiveRagdoll/Actions/StayInPlace.cs (limited to '_ActiveRagdoll/Actions/StayInPlace.cs') 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(); + input = GetComponent(); + death = GetComponent(); + 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); + } + } +} -- cgit v1.1-26-g67d0