diff options
Diffstat (limited to 'StayInPlace.cs')
-rw-r--r-- | StayInPlace.cs | 50 |
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); + } + } +} |