using UnityEngine; public class PlayerController : OrbitalPositionBehaviour { private static PlayerController s_Instance; public static bool IsPlayerAttached => s_Instance.m_OrbitalPosition.m_IsAttachedToRings; public static void AttachPlayer() { s_Instance.m_OrbitalPosition.m_IsAttachedToRings = true; } public Rigidbody2D m_Body; protected override void OnStart() { s_Instance = this; GlobalOrbitalPositionManager.SetPlayer(m_OrbitalPosition); m_OrbitalPosition.m_ObjectRadius = 0.4f; m_OrbitalPosition.m_SpinSpeed = 0.2f; } public void Update() { if (Input.GetKeyDown(KeyCode.Space) && GlobalOrbitalPositionManager.AllowPlayerInput) { m_OrbitalPosition.m_AttachedRing += 1; } if (Input.GetKeyDown(KeyCode.R)) { OnCollision(null); // Fake collision } } public override void OnCollision(OrbitalPositionBehaviour other) { GlobalOrbitalPositionManager.RestartSimulation(); if (!m_OrbitalPosition.m_IsAttachedToRings) return; m_OrbitalPosition.m_IsAttachedToRings = false; Vector3 direction = (-transform.position).normalized; m_Body.AddForce(direction * 5f, ForceMode2D.Impulse); } public override void OnReachCentre() { GlobalOrbitalPositionManager.RestartSimulation(); } }