summaryrefslogtreecommitdiffhomepage
path: root/Assets/Scripts/GravityTypes/GravitySphere.cs
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2022-12-11 06:15:05 -0500
committerrealtradam <[email protected]>2022-12-11 06:15:05 -0500
commit5fba0cf01188cc31d8ea6a1b031d29cbbf784e0e (patch)
treec2503ee046ef85fc5bd346f98b5d8df75c9a5193 /Assets/Scripts/GravityTypes/GravitySphere.cs
parent4e32bf914903b88a766e7d6166faf34cb4ba4620 (diff)
downloadMagnet-Run-3D-5fba0cf01188cc31d8ea6a1b031d29cbbf784e0e.tar.gz
Magnet-Run-3D-5fba0cf01188cc31d8ea6a1b031d29cbbf784e0e.zip
basic multi planet and multi plane gravity
Diffstat (limited to 'Assets/Scripts/GravityTypes/GravitySphere.cs')
-rw-r--r--Assets/Scripts/GravityTypes/GravitySphere.cs49
1 files changed, 49 insertions, 0 deletions
diff --git a/Assets/Scripts/GravityTypes/GravitySphere.cs b/Assets/Scripts/GravityTypes/GravitySphere.cs
new file mode 100644
index 0000000..2eb67a8
--- /dev/null
+++ b/Assets/Scripts/GravityTypes/GravitySphere.cs
@@ -0,0 +1,49 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class GravitySphere : GravitySource
+{
+ [SerializeField]
+ float gravity = 0.981f;
+
+ [SerializeField, Min(0f)]
+ float outerRadius = 10f;
+ [SerializeField, Min(0f)]
+ float outerFalloffRadius = 15f;
+
+ public override Vector3 GetGravity(Vector3 position)
+ {
+ Vector3 vector = transform.position - position;
+ float distance = vector.magnitude;
+ if(distance > outerFalloffRadius)
+ {
+ return Vector3.zero;
+ }
+ float g = gravity / distance;
+ return g * vector;
+ }
+
+ void OnDrawGizmos()
+ {
+ Vector3 p = transform.position;
+ Gizmos.color = Color.yellow;
+ Gizmos.DrawWireSphere(p, outerRadius);
+ if(outerFalloffRadius > outerRadius)
+ {
+ Gizmos.color = Color.cyan;
+ Gizmos.DrawWireSphere(p, outerFalloffRadius);
+ }
+ }
+
+ void Awake()
+ {
+ OnValidate();
+ }
+
+ void OnValidate()
+ {
+ outerFalloffRadius = Mathf.Max(outerFalloffRadius, outerRadius);
+ }
+
+}