Fixed player death launch

This commit is contained in:
Pasha Bibko
2025-11-25 10:14:25 +00:00
parent e55f6fc92b
commit 561594d123
3 changed files with 30 additions and 42 deletions

View File

@@ -134,7 +134,6 @@ GameObject:
- component: {fileID: 104400497}
- component: {fileID: 104400501}
- component: {fileID: 104400500}
- component: {fileID: 104400502}
m_Layer: 0
m_Name: Player
m_TagString: Untagged
@@ -162,7 +161,7 @@ MonoBehaviour:
m_IsAttachedToRings: 0
m_Behaviour: {fileID: 0}
m_SpinSpeed: 0
m_Body: {fileID: 104400502}
m_Renderer: {fileID: 104400500}
--- !u!4 &104400498
Transform:
m_ObjectHideFlags: 0
@@ -228,33 +227,6 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 104400496}
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!50 &104400502
Rigidbody2D:
serializedVersion: 4
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 104400496}
m_BodyType: 0
m_Simulated: 1
m_UseFullKinematicContacts: 0
m_UseAutoMass: 0
m_Mass: 1
m_LinearDrag: 0
m_AngularDrag: 0.05
m_GravityScale: 0
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_Interpolate: 1
m_SleepingMode: 1
m_CollisionDetection: 0
m_Constraints: 0
--- !u!1 &519420028
GameObject:
m_ObjectHideFlags: 0

View File

@@ -89,8 +89,12 @@ public class GlobalOrbitalPositionManager : MonoBehaviour
if (PlayerController.IsPlayerAttached)
s_Instance.m_PlayerOrbitalPosition.m_AttachedRing = s_Instance.m_LastGeneratedRing;
}
PlayerController.AttachPlayer();
foreach (OrbitalPosition behaviour in s_Instance.m_ObjectInstances)
{
behaviour.m_Behaviour.OnSimulationRestart();
}
yield return new WaitForSeconds(1.3f);
AllowPlayerInput = true;
@@ -223,4 +227,6 @@ public abstract class OrbitalPositionBehaviour : MonoBehaviour
public virtual void OnReachCentre() { }
public virtual void OnCollision(OrbitalPositionBehaviour other) { }
public virtual void OnSimulationRestart() { }
}

View File

@@ -6,7 +6,11 @@ public class PlayerController : OrbitalPositionBehaviour
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;
private Vector3 m_SuicidePoint;
private bool m_KillingItself = false;
private float m_DeathLerp = 0f;
public MeshRenderer m_Renderer;
protected override void OnStart()
{
@@ -17,7 +21,7 @@ public class PlayerController : OrbitalPositionBehaviour
m_OrbitalPosition.m_ObjectRadius = 0.4f;
m_OrbitalPosition.m_SpinSpeed = 0.2f;
}
public void Update()
{
if (Input.GetKeyDown(KeyCode.Space) && GlobalOrbitalPositionManager.AllowPlayerInput)
@@ -25,23 +29,29 @@ public class PlayerController : OrbitalPositionBehaviour
m_OrbitalPosition.m_AttachedRing += 1;
}
if (Input.GetKeyDown(KeyCode.R))
{
OnCollision(null); // Fake collision
}
if (!m_KillingItself)
return;
transform.position = Vector3.Lerp(m_SuicidePoint, Vector3.zero, m_DeathLerp);
m_DeathLerp += Time.deltaTime;
}
public override void OnCollision(OrbitalPositionBehaviour other)
{
GlobalOrbitalPositionManager.RestartSimulation();
if (!m_OrbitalPosition.m_IsAttachedToRings)
return;
GlobalOrbitalPositionManager.RestartSimulation();
m_SuicidePoint = transform.position;
m_KillingItself = true;
m_DeathLerp = 0f;
}
m_OrbitalPosition.m_IsAttachedToRings = false;
Vector3 direction = (-transform.position).normalized;
m_Body.AddForce(direction * 5f, ForceMode2D.Impulse);
public override void OnSimulationRestart()
{
m_KillingItself = false;
m_Renderer.enabled = true;
}
public override void OnReachCentre()