summaryrefslogtreecommitdiff
path: root/MovementHandler.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MovementHandler.cs')
-rw-r--r--MovementHandler.cs85
1 files changed, 85 insertions, 0 deletions
diff --git a/MovementHandler.cs b/MovementHandler.cs
new file mode 100644
index 0000000..22795f7
--- /dev/null
+++ b/MovementHandler.cs
@@ -0,0 +1,85 @@
+using System.Collections;
+using UnityEngine;
+
+public class MovementHandler : MonoBehaviour
+{
+ private InputHandler inputHandler;
+
+ public float friction = 0.9f;
+
+ public Vector3 movementVector;
+
+ public float[] animationForceAmounts;
+
+ private AnimationHandler animationHandler;
+
+ private RigidbodyHolder allRigs;
+
+ public AnimationCurve jumpCurve;
+
+ public float jumpForce;
+
+ private StandingDataHandler standingData;
+
+ private MovementDataHandler data;
+
+ private PlayerDeath death;
+
+ [HideInInspector]
+ public float multiplier = 1f;
+
+ private WobbleShake wobbleShake;
+
+ private void Start()
+ {
+ wobbleShake = GetComponentInChildren<WobbleShake>();
+ death = GetComponent<PlayerDeath>();
+ standingData = GetComponent<StandingDataHandler>();
+ inputHandler = GetComponent<InputHandler>();
+ animationHandler = GetComponent<AnimationHandler>();
+ allRigs = GetComponent<RigidbodyHolder>();
+ data = GetComponent<MovementDataHandler>();
+ }
+
+ private void FixedUpdate()
+ {
+ if (!death.dead)
+ {
+ data.sinceJump += Time.fixedDeltaTime;
+ movementVector += inputHandler.inputMovementDirection * animationForceAmounts[animationHandler.animationState];
+ movementVector *= friction;
+ for (int i = 0; i < allRigs.GetAllRigs().Length; i++)
+ {
+ allRigs.GetAllRigs()[i].AddForce(movementVector * multiplier, ForceMode.Acceleration);
+ }
+ }
+ }
+
+ public void Jump()
+ {
+ if (!(data.sinceJump < 0.5f) && !(standingData.sinceGrounded > 0.3f))
+ {
+ data.sinceJump = 0f;
+ StartCoroutine(AddJumpForce());
+ wobbleShake.AddShake(Vector3.up * 2f, 0.8f);
+ }
+ }
+
+ private IEnumerator AddJumpForce()
+ {
+ float counter = 0f;
+ for (int i = 0; i < allRigs.GetAllRigs().Length; i++)
+ {
+ allRigs.GetAllRigs()[i].velocity = new Vector3(allRigs.GetAllRigs()[i].velocity.x, 0f, allRigs.GetAllRigs()[i].velocity.z);
+ }
+ while (counter < jumpCurve.keys[jumpCurve.length - 1].time && !death.dead)
+ {
+ counter += Time.deltaTime;
+ for (int j = 0; j < allRigs.GetAllRigs().Length; j++)
+ {
+ allRigs.GetAllRigs()[j].AddForce(Vector3.up * multiplier * jumpForce * jumpCurve.Evaluate(counter) * Time.deltaTime, ForceMode.Acceleration);
+ }
+ yield return null;
+ }
+ }
+}