From 80c625ffc85a0e45c37c771c2ccb141635e32711 Mon Sep 17 00:00:00 2001 From: Pasha Bibko <156938226+PashaBibko@users.noreply.github.com> Date: Thu, 20 Nov 2025 15:44:07 +0000 Subject: [PATCH] Made player launch when hit Needs fixing --- Assets/Scenes/SampleScene.unity | 30 +++++++++++++++++++++++++++ Assets/Scripts/OrbitalPosition.cs | 10 ++++++++- Assets/Scripts/PlayerController.cs | 15 ++++++++++++-- ProjectSettings/ProjectSettings.asset | 6 ++++-- 4 files changed, 56 insertions(+), 5 deletions(-) diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 19b7b2f..ad1e9bd 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -134,6 +134,7 @@ GameObject: - component: {fileID: 104400497} - component: {fileID: 104400501} - component: {fileID: 104400500} + - component: {fileID: 104400502} m_Layer: 0 m_Name: Player m_TagString: Untagged @@ -158,8 +159,10 @@ MonoBehaviour: m_DistanceFromCentre: 0 m_DistanceAlongRadius: 0 m_ObjectRadius: 0 + m_IsAttachedToRings: 0 m_Behaviour: {fileID: 0} m_SpinSpeed: 0 + m_Body: {fileID: 104400502} --- !u!4 &104400498 Transform: m_ObjectHideFlags: 0 @@ -225,6 +228,33 @@ 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: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 --- !u!1 &519420028 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/OrbitalPosition.cs b/Assets/Scripts/OrbitalPosition.cs index e13a2a0..831ab09 100644 --- a/Assets/Scripts/OrbitalPosition.cs +++ b/Assets/Scripts/OrbitalPosition.cs @@ -8,6 +8,7 @@ using UnityEngine; public float m_DistanceFromCentre; public float m_DistanceAlongRadius; public float m_ObjectRadius = 0.1f; + public bool m_IsAttachedToRings = true; public OrbitalPositionBehaviour m_Behaviour; public readonly Transform m_Owner; @@ -84,8 +85,12 @@ public class GlobalOrbitalPositionManager : MonoBehaviour for (int i = 0; i < 100; i++) { yield return new WaitForFixedUpdate(); - s_Instance.m_PlayerOrbitalPosition.m_AttachedRing = s_Instance.m_LastGeneratedRing; + + if (PlayerController.IsPlayerAttached) + s_Instance.m_PlayerOrbitalPosition.m_AttachedRing = s_Instance.m_LastGeneratedRing; } + + PlayerController.AttachPlayer(); yield return new WaitForSeconds(1.3f); AllowPlayerInput = true; @@ -149,6 +154,9 @@ public class GlobalOrbitalPositionManager : MonoBehaviour foreach (OrbitalPosition orbitalPosition in m_ObjectInstances) { + if (!orbitalPosition.m_IsAttachedToRings) + continue; + if (!m_Distances.ContainsKey(orbitalPosition.m_AttachedRing)) { orbitalPosition.m_AttachedRing = m_LastGeneratedRing; diff --git a/Assets/Scripts/PlayerController.cs b/Assets/Scripts/PlayerController.cs index 46321a4..fd93b49 100644 --- a/Assets/Scripts/PlayerController.cs +++ b/Assets/Scripts/PlayerController.cs @@ -2,14 +2,22 @@ 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.1f; } - + public void Update() { if (Input.GetKeyDown(KeyCode.Space) && GlobalOrbitalPositionManager.AllowPlayerInput) @@ -20,7 +28,10 @@ public class PlayerController : OrbitalPositionBehaviour public override void OnCollision(OrbitalPositionBehaviour other) { - Debug.Log("HIT OBSTACLE IG"); + GlobalOrbitalPositionManager.RestartSimulation(); + + m_OrbitalPosition.m_IsAttachedToRings = false; + m_Body.AddForce(Vector2.up * 6, ForceMode2D.Impulse); } public override void OnReachCentre() diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 6332292..3bfe3c7 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -619,8 +619,10 @@ PlayerSettings: tvOS: UNITY_POST_PROCESSING_STACK_V2 additionalCompilerArguments: {} platformArchitecture: {} - scriptingBackend: {} - il2cppCompilerConfiguration: {} + scriptingBackend: + Standalone: 0 + il2cppCompilerConfiguration: + Standalone: 2 il2cppCodeGeneration: {} managedStrippingLevel: EmbeddedLinux: 1