diff --git a/Assets/Scenes/Test Scenes.meta b/Assets/Scenes/Test Scenes.meta new file mode 100644 index 0000000..724b1ee --- /dev/null +++ b/Assets/Scenes/Test Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 077abae28faa3204f8b0fec20e7e7522 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Test Scenes/Static Ring.unity b/Assets/Scenes/Test Scenes/Static Ring.unity new file mode 100644 index 0000000..61f1ef0 --- /dev/null +++ b/Assets/Scenes/Test Scenes/Static Ring.unity @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62a2e1d27aed8fce1ab0b9957d97fdda920356ea0c693979ce5a1c3ab306c433 +size 202288 diff --git a/Assets/Scenes/Test Scenes/Static Ring.unity.meta b/Assets/Scenes/Test Scenes/Static Ring.unity.meta new file mode 100644 index 0000000..af32a6b --- /dev/null +++ b/Assets/Scenes/Test Scenes/Static Ring.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ebec2921b133db44b985b8127c0ab010 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Static Physics/ArtificialGravity.cs b/Assets/Scripts/Static Physics/ArtificialGravity.cs new file mode 100644 index 0000000..2db4e38 --- /dev/null +++ b/Assets/Scripts/Static Physics/ArtificialGravity.cs @@ -0,0 +1,43 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + + +[RequireComponent(typeof(Rigidbody))] +public class ArtificialGravity : MonoBehaviour +{ + [SerializeField] + private RotationController Ship; + + private Rigidbody rb; + + private void OnEnable() + { + rb = GetComponent(); + rb.useGravity = false; + + if (Ship == null) + Ship = FindObjectOfType(); + } + + + private void FixedUpdate() + { + ApplyGravity(); + } + + private void ApplyGravity() + { + if (Ship.RotationPeriod <= 0) + return; + + Vector3 direction = (transform.position - Ship.Position); + float force = direction.magnitude * Mathf.Pow(2 * Mathf.PI / Ship.RotationPeriod, 2); + + rb.AddForce(direction.normalized * force * Time.fixedDeltaTime, ForceMode.Acceleration); + } + + + + +} diff --git a/Assets/Scripts/Static Physics/ArtificialGravity.cs.meta b/Assets/Scripts/Static Physics/ArtificialGravity.cs.meta new file mode 100644 index 0000000..07d7f36 --- /dev/null +++ b/Assets/Scripts/Static Physics/ArtificialGravity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a67b59dce8f5cd24b926f5f79c0b67ec +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Static Physics/RotationController.cs b/Assets/Scripts/Static Physics/RotationController.cs new file mode 100644 index 0000000..ec19a1e --- /dev/null +++ b/Assets/Scripts/Static Physics/RotationController.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class RotationController : MonoBehaviour +{ + + #region Read-Only Fields + public float RotationPeriod => m_RotationPeriod; + public Vector3 Position => transform.position; + #endregion Read-Only Fields + + [SerializeField] + private float m_RotationPeriod; + + + private void FixedUpdate() + { + transform.Rotate(Vector3.forward, 360/m_RotationPeriod * Time.fixedDeltaTime, Space.World); + } + + +} diff --git a/Assets/Scripts/Static Physics/RotationController.cs.meta b/Assets/Scripts/Static Physics/RotationController.cs.meta new file mode 100644 index 0000000..52e3612 --- /dev/null +++ b/Assets/Scripts/Static Physics/RotationController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c4b2eee9c899c2a458f8516e0666c57d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: