Files
U10-MobileGame/Assets/Scripts/PlayerController.cs
2025-11-25 09:46:43 +00:00

52 lines
1.4 KiB
C#

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();
}
}