From adb0c9e67323f3a78d79a9ba99b663bad1d59d29 Mon Sep 17 00:00:00 2001 From: Programmer-DField Date: Mon, 15 Feb 2021 13:14:42 +0000 Subject: [PATCH] Added the Respawn Manager which allows for the use of multiple safe zones. Cleeaned up the code and made more efficient. --- game/Assets/RespawnManager.cs | 23 +++ game/Assets/RespawnManager.cs.meta | 11 + game/Assets/Scenes/Checkpoints.unity | 191 +++++++++++++++++- game/Assets/Scripts/Checkpoint/SafeZone.cs | 32 ++- .../Scripts/Death & Respawn/DeathZone.cs | 20 +- 5 files changed, 240 insertions(+), 37 deletions(-) create mode 100644 game/Assets/RespawnManager.cs create mode 100644 game/Assets/RespawnManager.cs.meta diff --git a/game/Assets/RespawnManager.cs b/game/Assets/RespawnManager.cs new file mode 100644 index 0000000..b49d66f --- /dev/null +++ b/game/Assets/RespawnManager.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class RespawnManager : MonoBehaviour +{ + private Vector3 respawnPoint; + + public void setRespawnPoint(Vector3 _respawnPoint) + { + respawnPoint = _respawnPoint; + } + + public Vector3 getRespawnPoint() + { + return respawnPoint; + } + + private void Update() + { + Debug.Log(respawnPoint); + } +} diff --git a/game/Assets/RespawnManager.cs.meta b/game/Assets/RespawnManager.cs.meta new file mode 100644 index 0000000..d2c64d0 --- /dev/null +++ b/game/Assets/RespawnManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4a7f7dc8ddb842944abcbcbb1d4995f5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/game/Assets/Scenes/Checkpoints.unity b/game/Assets/Scenes/Checkpoints.unity index ef4ec65..f72430b 100644 --- a/game/Assets/Scenes/Checkpoints.unity +++ b/game/Assets/Scenes/Checkpoints.unity @@ -223,6 +223,62 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0, y: 0} +--- !u!1 &254941226 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 254941229} + - component: {fileID: 254941228} + - component: {fileID: 254941227} + m_Layer: 0 + m_Name: GameManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &254941227 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 254941226} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4a7f7dc8ddb842944abcbcbb1d4995f5, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &254941228 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 254941226} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4a7f7dc8ddb842944abcbcbb1d4995f5, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &254941229 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 254941226} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &258328461 GameObject: m_ObjectHideFlags: 0 @@ -1271,6 +1327,130 @@ MonoBehaviour: - {fileID: 597246037} - {fileID: 1381952761} - {fileID: 1708315762} +--- !u!1 &628109597 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 628109603} + - component: {fileID: 628109602} + - component: {fileID: 628109601} + - component: {fileID: 628109600} + - component: {fileID: 628109599} + - component: {fileID: 628109598} + m_Layer: 0 + m_Name: SafeZone (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &628109598 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 628109597} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 45048530c51ef5e4196d4fa70972441c, type: 3} + m_Name: + m_EditorClassIdentifier: + _respawnManager: {fileID: 254941228} +--- !u!65 &628109599 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 628109597} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 10, y: 2.220446e-16, z: 10} + m_Center: {x: 0, y: 0, z: 0} +--- !u!64 &628109600 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 628109597} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 0 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &628109601 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 628109597} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: c7c9da98e081aaa43883652afefc74b3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &628109602 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 628109597} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &628109603 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 628109597} + m_LocalRotation: {x: -0, y: 0.70394546, z: -0, w: 0.7102541} + m_LocalPosition: {x: 925.46, y: 518.74, z: -11.07} + m_LocalScale: {x: 0.32437897, y: 1.6604103, z: 1.6020799} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 89.489, z: 0} --- !u!1 &634356289 GameObject: m_ObjectHideFlags: 0 @@ -1696,10 +1876,9 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 5f1d0f28dfb6a7245ac9ab4193aaed55, type: 3} m_Name: m_EditorClassIdentifier: - sz: {fileID: 971403629} animator: {fileID: 597246038} fadeScreen: {fileID: 2047982323} - player: {fileID: 597246037} + respawnManager: {fileID: 254941228} --- !u!65 &861196245 BoxCollider: m_ObjectHideFlags: 0 @@ -1835,8 +2014,8 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 971403624} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 958.13, y: 518.5, z: -0.11} - m_LocalScale: {x: 1.0044247, y: 5.141385, z: 4.9607673} + m_LocalPosition: {x: 958.13, y: 518.74, z: -1.33} + m_LocalScale: {x: 0.91052103, y: 5.141385, z: 4.6924133} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 12 @@ -1853,9 +2032,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 45048530c51ef5e4196d4fa70972441c, type: 3} m_Name: m_EditorClassIdentifier: - respawnPoint: {x: 0, y: 0, z: 0} - playerPos: {x: 0, y: 0, z: 0} - lastPlayerPos: [] + _respawnManager: {fileID: 254941228} --- !u!65 &971403630 BoxCollider: m_ObjectHideFlags: 0 diff --git a/game/Assets/Scripts/Checkpoint/SafeZone.cs b/game/Assets/Scripts/Checkpoint/SafeZone.cs index e2c2721..af2757a 100644 --- a/game/Assets/Scripts/Checkpoint/SafeZone.cs +++ b/game/Assets/Scripts/Checkpoint/SafeZone.cs @@ -8,39 +8,35 @@ public class SafeZone : MonoBehaviour private GameObject player; private bool isSafe = false; - public Vector3 respawnPoint; - public Vector3 playerPos; - public List lastPlayerPos = new List(); - - private void Start() - { - player = GameObject.Find("Player"); - } + [SerializeField] private RespawnManager _respawnManager; private void OnTriggerEnter(Collider other) { - isSafe = true; + if (other.gameObject.name == "Player") + { + isSafe = true; + player = other.gameObject; + } } private void OnTriggerExit(Collider other) { - isSafe = false; + if (other.gameObject.name == "Player") + { + isSafe = false; + } } private void FixedUpdate() { - if (isSafe == true) + if (isSafe) { - playerPos = player.transform.position; - lastPlayerPos.Add(playerPos); - - respawnPoint = lastPlayerPos.Last(); - Debug.Log("Player Position: X = " + playerPos.x + " --- Y = " + playerPos.y + " --- Z = " + playerPos.z + " --- RespawnPoint = " + respawnPoint); + SetRespawnPoint(player.transform.position); } } - public Vector3 safeSpawn() + private void SetRespawnPoint(Vector3 _respawnPoint) { - return respawnPoint; + _respawnManager.setRespawnPoint(_respawnPoint); } } diff --git a/game/Assets/Scripts/Death & Respawn/DeathZone.cs b/game/Assets/Scripts/Death & Respawn/DeathZone.cs index 888d9ac..5cec489 100644 --- a/game/Assets/Scripts/Death & Respawn/DeathZone.cs +++ b/game/Assets/Scripts/Death & Respawn/DeathZone.cs @@ -3,22 +3,19 @@ using System.Collections.Generic; using UnityEngine; public class DeathZone : MonoBehaviour -{ - public SafeZone sz; - public Animator animator; - +{ + public Animator animator; public GameObject fadeScreen; - [SerializeField] private Transform player; - private bool isDead; + private GameObject player; + + [SerializeField] private RespawnManager respawnManager; private void OnTriggerEnter(Collider other) { - isDead = true; - - if (isDead == true) + if (other.gameObject.name == "Player") { - + player = other.gameObject; StartCoroutine(respawnPlayer()); } } @@ -31,11 +28,10 @@ public class DeathZone : MonoBehaviour fadeScreen.GetComponent().Play("fadeAnim"); //yield return new WaitForSeconds(0.5f); - player.transform.position = sz.safeSpawn(); + player.transform.position = respawnManager.getRespawnPoint(); yield return new WaitForSeconds(2); fadeScreen.GetComponent().Play("fadeInAnim"); yield return null; - isDead = false; } } \ No newline at end of file