summaryrefslogtreecommitdiff
path: root/_ActiveRagdoll/Actions/StayInPlace.cs
diff options
context:
space:
mode:
Diffstat (limited to '_ActiveRagdoll/Actions/StayInPlace.cs')
-rw-r--r--_ActiveRagdoll/Actions/StayInPlace.cs51
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);
+ }
+ }
+}