summaryrefslogtreecommitdiff
path: root/DoggoMovement.cs
diff options
context:
space:
mode:
Diffstat (limited to 'DoggoMovement.cs')
-rw-r--r--DoggoMovement.cs43
1 files changed, 43 insertions, 0 deletions
diff --git a/DoggoMovement.cs b/DoggoMovement.cs
new file mode 100644
index 0000000..ea7519b
--- /dev/null
+++ b/DoggoMovement.cs
@@ -0,0 +1,43 @@
+using UnityEngine;
+
+public class DoggoMovement : MonoBehaviour
+{
+ public float drag = 0.1f;
+
+ private CollisionChecker[] checkers;
+
+ private Rigidbody rig;
+
+ private Rigidbody[] rigs;
+
+ private MovementHandler move;
+
+ private void Start()
+ {
+ move = base.transform.root.GetComponent<MovementHandler>();
+ rigs = base.transform.root.GetComponentsInChildren<Rigidbody>();
+ checkers = base.transform.root.GetComponentsInChildren<CollisionChecker>();
+ rig = GetComponent<Rigidbody>();
+ }
+
+ private void FixedUpdate()
+ {
+ float num = 1f;
+ num = 0f;
+ for (int i = 0; i < checkers.Length; i++)
+ {
+ if (checkers[i].sinceGrounded < 0.3f)
+ {
+ num += 1f / (float)checkers.Length;
+ }
+ }
+ move.multiplier = num;
+ Rigidbody[] array = rigs;
+ foreach (Rigidbody rigidbody in array)
+ {
+ rigidbody.velocity *= 1f - drag * num;
+ rigidbody.angularVelocity *= 1f - drag * num;
+ }
+ rig.AddTorque(Vector3.Angle(base.transform.up, Vector3.up) * Vector3.Cross(base.transform.up, Vector3.up) * 50f * num, ForceMode.Acceleration);
+ }
+}