From 172d1e403b5586a2092934e7d498cca49a727564 Mon Sep 17 00:00:00 2001 From: dgg1dbg Date: Wed, 11 Dec 2024 20:06:30 +0900 Subject: [PATCH] =?UTF-8?q?particle=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scenes/LevelOneScene.unity | 48 +++++++++++++++++++ Assets/Scenes/LevelTwoScene.unity | 48 +++++++++++++++++++ Assets/Scripts/LevelClear.cs | 2 +- Assets/Scripts/ParticleManager.cs | 36 ++++++++++++++ Assets/Scripts/ParticleManager.cs.meta | 11 +++++ Assets/Scripts/PlayerBehaviour.cs | 13 +++-- .../Settings.json | 12 ++--- 7 files changed, 160 insertions(+), 10 deletions(-) create mode 100644 Assets/Scripts/ParticleManager.cs create mode 100644 Assets/Scripts/ParticleManager.cs.meta diff --git a/Assets/Scenes/LevelOneScene.unity b/Assets/Scenes/LevelOneScene.unity index 8277a39..8c25526 100644 --- a/Assets/Scenes/LevelOneScene.unity +++ b/Assets/Scenes/LevelOneScene.unity @@ -16555,6 +16555,53 @@ Transform: m_CorrespondingSourceObject: {fileID: 253986412282149583, guid: ca1aa9b18dfd040b4a78ed24cb2df9bf, type: 3} m_PrefabInstance: {fileID: 666104837} m_PrefabAsset: {fileID: 0} +--- !u!1 &666761484 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 666761486} + - component: {fileID: 666761485} + m_Layer: 0 + m_Name: ParticleManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &666761485 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 666761484} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8c95c6be162b4134b6a802f6274b722, type: 3} + m_Name: + m_EditorClassIdentifier: + respawnEffect: {fileID: 2641121113345803941, guid: bac9dfb673bd44a83b396dc74e134bbf, type: 3} + disposeEffect: {fileID: 2641121113345803941, guid: 2bf7e45ce383a43e6bfa101d3113d1a7, type: 3} + clearEffect: {fileID: 2641121113345803941, guid: 2bf7e45ce383a43e6bfa101d3113d1a7, type: 3} +--- !u!4 &666761486 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 666761484} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 23.554657, y: -436.81015, z: 596.1596} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &666771378 PrefabInstance: m_ObjectHideFlags: 0 @@ -44288,6 +44335,7 @@ MonoBehaviour: moveSpeed: 2 rotationSpeed: 10 referenceSpeed: 0.5 + particleManager: {fileID: 666761485} --- !u!114 &1793613793 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/LevelTwoScene.unity b/Assets/Scenes/LevelTwoScene.unity index 68e73f0..38251cc 100644 --- a/Assets/Scenes/LevelTwoScene.unity +++ b/Assets/Scenes/LevelTwoScene.unity @@ -5624,6 +5624,53 @@ MonoBehaviour: zStart: 0.5 zStep: 1 y: 0.49 +--- !u!1 &84927914 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 84927916} + - component: {fileID: 84927915} + m_Layer: 0 + m_Name: ParticleManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &84927915 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 84927914} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8c95c6be162b4134b6a802f6274b722, type: 3} + m_Name: + m_EditorClassIdentifier: + respawnEffect: {fileID: 2641121113345803941, guid: bac9dfb673bd44a83b396dc74e134bbf, type: 3} + disposeEffect: {fileID: 2641121113345803941, guid: 2bf7e45ce383a43e6bfa101d3113d1a7, type: 3} + clearEffect: {fileID: 2641121113345803941, guid: 2bf7e45ce383a43e6bfa101d3113d1a7, type: 3} +--- !u!4 &84927916 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 84927914} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 23.554657, y: -436.81015, z: 596.1596} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &85619834 PrefabInstance: m_ObjectHideFlags: 0 @@ -33274,6 +33321,7 @@ MonoBehaviour: moveSpeed: 2 rotationSpeed: 10 referenceSpeed: 0.5 + particleManager: {fileID: 84927915} --- !u!114 &508233734 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/LevelClear.cs b/Assets/Scripts/LevelClear.cs index 9194aa5..a0768c5 100644 --- a/Assets/Scripts/LevelClear.cs +++ b/Assets/Scripts/LevelClear.cs @@ -119,6 +119,6 @@ public void Restart() } AudioManager.Instance.PlaySFX("ButtonClick"); - SceneManager.LoadScene("Level" + level.ToString()); + } } diff --git a/Assets/Scripts/ParticleManager.cs b/Assets/Scripts/ParticleManager.cs new file mode 100644 index 0000000..b376457 --- /dev/null +++ b/Assets/Scripts/ParticleManager.cs @@ -0,0 +1,36 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ParticleManager : MonoBehaviour +{ + public ParticleSystem respawnEffect; + public ParticleSystem disposeEffect; + public ParticleSystem clearEffect; + + public void PlayRespawnEffect(Vector3 position) + { + if (respawnEffect != null) + { + Instantiate(respawnEffect, position, Quaternion.identity).Play(); + } + } + + public void PlayDisposeEffect(Vector3 position) + { + if (disposeEffect != null) + { + Instantiate(disposeEffect, position, Quaternion.identity).Play(); + } + } + + public IEnumerator PlayLevelClearEffect(Vector3 position) + { + if (clearEffect != null) + { + Instantiate(clearEffect, position, Quaternion.identity).Play(); + } + yield return new WaitForSeconds(1.5f); + } + +} diff --git a/Assets/Scripts/ParticleManager.cs.meta b/Assets/Scripts/ParticleManager.cs.meta new file mode 100644 index 0000000..1c5f812 --- /dev/null +++ b/Assets/Scripts/ParticleManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d8c95c6be162b4134b6a802f6274b722 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/PlayerBehaviour.cs b/Assets/Scripts/PlayerBehaviour.cs index b7a3e91..ba80d58 100644 --- a/Assets/Scripts/PlayerBehaviour.cs +++ b/Assets/Scripts/PlayerBehaviour.cs @@ -38,6 +38,8 @@ public class PlayerBehaviour : MonoBehaviour private float goalZ; + [SerializeField] private ParticleManager particleManager; + private void Start() { _obstacleTilemap = obstacleGrid.GetComponentInChildren(); @@ -85,12 +87,13 @@ private void Update() if (transform.position.z >= goalZ) { - ClearGame(); + StartCoroutine(ClearGame()); } } - private void ClearGame() + private IEnumerator ClearGame() { + yield return StartCoroutine(particleManager.PlayLevelClearEffect(transform.position)); int level = DataManager.Instance.GetActiveLevelData().level; int score = ScoreModel.Instance.CalculateFinalScore(transform.position.z); ActiveLevelData levelClearData = new ActiveLevelData(level, score); @@ -201,7 +204,7 @@ public void Respawn() // If respawn position is past goal, clear game if (transform.position.z >= goalZ) { - ClearGame(); + StartCoroutine(ClearGame()); return; } @@ -220,6 +223,9 @@ public void Respawn() // Stop walking animation _isWalking = false; _animator.SetBool("isWalking", false); + + // Play Respawn Particle + particleManager.PlayRespawnEffect(transform.position); } private void QuantizePosition() @@ -272,6 +278,7 @@ public void DisposeTrash() StageManager.Instance.bagController.RemoveTrash(); trashType = StageManager.Instance.bagController.GetFirstTrashType(); } + particleManager.PlayDisposeEffect(transform.position); StartCoroutine(nameof(TrashDisposeCooldownRoutine)); } diff --git a/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json b/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json index 757e1a0..ad11087 100644 --- a/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json +++ b/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json @@ -1,7 +1,7 @@ { - "m_Name": "Settings", - "m_Path": "ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json", - "m_Dictionary": { - "m_DictionaryValues": [] - } -} + "m_Name": "Settings", + "m_Path": "ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json", + "m_Dictionary": { + "m_DictionaryValues": [] + } +} \ No newline at end of file