diff options
author | chai <215380520@qq.com> | 2024-03-13 11:00:58 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2024-03-13 11:00:58 +0800 |
commit | 6ce8b9e22fc13be34b442c7b6af48b42cd44275a (patch) | |
tree | b38119d2acf0a982cb67e381f146924b9bfc3b3f /DoggoMovement.cs |
+init
Diffstat (limited to 'DoggoMovement.cs')
-rw-r--r-- | DoggoMovement.cs | 43 |
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); + } +} |