52 lines
1.4 KiB
C#
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();
|
|
}
|
|
}
|