Files
U10-MobileGame/Assets/Scripts/PlayerController.cs
2025-11-25 13:24:31 +00:00

71 lines
1.9 KiB
C#

using UnityEngine;
using UnityEngine.UI;
public class PlayerController : OrbitalPositionBehaviour
{
public static int PlayerScore = 0;
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; }
private Vector3 m_SuicidePoint;
private bool m_KillingItself;
private float m_DeathLerp;
public MeshRenderer m_Renderer;
public Text m_ScoreText;
protected override void OnStart()
{
s_Instance = this;
GlobalOrbitalPositionManager.SetPlayer(m_OrbitalPosition);
m_OrbitalPosition.m_ObjectRadius = 0.2f;
m_OrbitalPosition.m_SpinSpeed = 0.2f;
}
public void Update()
{
m_ScoreText.text = PlayerScore.ToString();
if (GlobalInput.IsScreenClicked() && GlobalOrbitalPositionManager.AllowPlayerInput)
{
m_OrbitalPosition.m_AttachedRing += 1;
}
if (!m_KillingItself)
return;
transform.position = Vector3.Lerp(m_SuicidePoint, m_SuicidePoint.normalized * 20f, m_DeathLerp);
m_DeathLerp += Time.deltaTime;
}
public override void OnCollision(OrbitalPositionBehaviour other)
{
if (!m_OrbitalPosition.m_IsAttachedToRings)
return;
GlobalOrbitalPositionManager.RestartSimulation();
m_SuicidePoint = transform.position;
m_KillingItself = true;
m_DeathLerp = 0f;
}
public override void OnSimulationRestart()
{
m_KillingItself = false;
m_Renderer.enabled = true;
m_Renderer.material.color = Color.green;
PlayerScore = 0;
}
public override void OnReachCentre()
{
GlobalOrbitalPositionManager.RestartSimulation();
}
}