summaryrefslogtreecommitdiff
path: root/StayInPlace.cs
diff options
context:
space:
mode:
Diffstat (limited to 'StayInPlace.cs')
-rw-r--r--StayInPlace.cs50
1 files changed, 50 insertions, 0 deletions
diff --git a/StayInPlace.cs b/StayInPlace.cs
new file mode 100644
index 0000000..d10ebba
--- /dev/null
+++ b/StayInPlace.cs
@@ -0,0 +1,50 @@
+using UnityEngine;
+
+public class StayInPlace : MonoBehaviour
+{
+ private InputHandler input;
+
+ public Rigidbody rig;
+
+ public float force;
+
+ 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);
+ }
+ }
+}