diff --git a/Assets/Scenes/Level_02.unity b/Assets/Scenes/Level_02.unity index 29ff8bbbd3fc53c1ed30560ba30ddb6d169deddc..2f2cb2348117fc966df295c52c08971cb463bd1c 100644 --- a/Assets/Scenes/Level_02.unity +++ b/Assets/Scenes/Level_02.unity @@ -677,6 +677,7 @@ RectTransform: - {fileID: 1755254423} - {fileID: 1214467934} - {fileID: 1702970505} + - {fileID: 83661864} m_Father: {fileID: 0} m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -719,6 +720,85 @@ MonoBehaviour: warningText: {fileID: 839222784} playerHealth: {fileID: 33458251} restartDelay: 5 +--- !u!1 &83661861 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 83661864} + - component: {fileID: 83661863} + - component: {fileID: 83661862} + m_Layer: 5 + m_Name: Wave + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &83661862 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 83661861} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 46238fb1ad7a7a84ba8954c1c860994c, type: 3} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Wave :' +--- !u!222 &83661863 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 83661861} + m_CullTransparentMesh: 1 +--- !u!224 &83661864 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 83661861} + 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: 38786128} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 115, y: -50} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &180263584 GameObject: m_ObjectHideFlags: 0 @@ -776,8 +856,6 @@ GameObject: m_Component: - component: {fileID: 240257950} - component: {fileID: 240257949} - - component: {fileID: 240257948} - - component: {fileID: 240257947} - component: {fileID: 240257951} m_Layer: 0 m_Name: EnemyManager @@ -786,46 +864,6 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &240257947 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 240257946} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 76a99222b1e4a384e923ac7e86efc709, type: 3} - m_Name: - m_EditorClassIdentifier: - playerHealth: {fileID: 33458251} - enemy: {fileID: 5459919538816712371, guid: 08d858bd75521ab4da4ac8522ae60d34, type: 3} - spawnEnemy: 2 - spawnTime: 5 - spawnPointsCenter: {x: 0, y: 0, z: 0} - spawnRotation: {x: 0, y: 0, z: 0} - size: {x: 100, y: 0, z: 100} - factory: {fileID: 180263585} ---- !u!114 &240257948 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 240257946} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 76a99222b1e4a384e923ac7e86efc709, type: 3} - m_Name: - m_EditorClassIdentifier: - playerHealth: {fileID: 33458251} - enemy: {fileID: 8511813286321513077, guid: d0928bd03eab9e64986a2176302bff2d, type: 3} - spawnEnemy: 1 - spawnTime: 5 - spawnPointsCenter: {x: 0, y: 0, z: 0} - spawnRotation: {x: 0, y: 0, z: 0} - size: {x: 100, y: 0, z: 100} - factory: {fileID: 180263585} --- !u!114 &240257949 MonoBehaviour: m_ObjectHideFlags: 0 @@ -839,12 +877,22 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: playerHealth: {fileID: 33458251} - enemy: {fileID: 2419862316602802249, guid: a8b071f04b05806449db0eabf8b36149, type: 3} - spawnEnemy: 0 - spawnTime: 5 + enemy1: {fileID: 2419862316602802249, guid: a8b071f04b05806449db0eabf8b36149, type: 3} + enemy2: {fileID: 8511813286321513077, guid: d0928bd03eab9e64986a2176302bff2d, type: 3} + enemy3: {fileID: 5459919538816712371, guid: 08d858bd75521ab4da4ac8522ae60d34, type: 3} + spawnEnemy1: 0 + spawnEnemy2: 1 + spawnEnemy3: 2 + spawnTime: 3 spawnPointsCenter: {x: 0, y: 0, z: 0} spawnRotation: {x: 0, y: 0, z: 0} - size: {x: 0, y: 0, z: 0} + size: {x: 70, y: 0, z: 70} + poolEnemy1: 030000000500000007000000 + poolEnemy2: 020000000400000006000000 + poolEnemy3: 000000000000000001000000 + numOfTotalWaves: 3 + startWaves: 1 + waveText: {fileID: 83661862} factory: {fileID: 180263585} --- !u!4 &240257950 Transform: diff --git a/Assets/Scripts/Managers/EnemyManagerWave.cs b/Assets/Scripts/Managers/EnemyManagerWave.cs index ea416d6d99fa82c290a3e0ef7fdb1b5bd102c674..26f6d9411692d123c5d6b96adb4241693af840ba 100644 --- a/Assets/Scripts/Managers/EnemyManagerWave.cs +++ b/Assets/Scripts/Managers/EnemyManagerWave.cs @@ -2,32 +2,89 @@ using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; +using UnityEngine.UI; public class EnemyManagerWave : MonoBehaviour { public PlayerHealth playerHealth; - public GameObject enemy; - public int spawnEnemy; + public GameObject enemy1; + public GameObject enemy2; + public GameObject enemy3; + public int spawnEnemy1; + public int spawnEnemy2; + public int spawnEnemy3; public float spawnTime = 3f; public Vector3 spawnPointsCenter; public Vector3 spawnRotation; public Vector3 size; + public int[] poolEnemy1; + public int[] poolEnemy2; + public int[] poolEnemy3; + public int numOfTotalWaves = 3; + public int startWaves = 1; + public Text waveText; + int currentWaves = 0; UnityEngine.AI.NavMeshAgent nav; - int floorMask; + [SerializeField] public MonoBehaviour factory; IFactory Factory { get { return factory as IFactory; } } void Start () { - floorMask = LayerMask.GetMask("Floor"); //Mengeksekusi fungs Spawn setiap beberapa detik sesui dengan nilai spawnTime nav = GetComponent<UnityEngine.AI.NavMeshAgent>(); - InvokeRepeating("Spawn", spawnTime, spawnTime); + currentWaves = startWaves - 1; + waveText.text = "Wave:" + (currentWaves+1); + if (currentWaves < numOfTotalWaves) + { + //spawn enemy1 + for(int i = 0; i<poolEnemy1[currentWaves]; i++) + { + Spawn(spawnEnemy1); + } + //spawn enemy2 + for (int i = 0; i < poolEnemy2[currentWaves]; i++) + { + Spawn(spawnEnemy2); + } + //spawn enemy3 + for (int i = 0; i < poolEnemy3[currentWaves]; i++) + { + Spawn(spawnEnemy3); + } + } } + void Update() + { + GameObject enemy = GameObject.FindGameObjectWithTag("Enemy"); + if(enemy == null) + { + currentWaves += 1; + waveText.text = "Wave:" + (currentWaves + 1); + if (currentWaves < numOfTotalWaves) + { + //spawn enemy1 + for (int i = 0; i < poolEnemy1[currentWaves]; i++) + { + Spawn(spawnEnemy1); + } + //spawn enemy2 + for (int i = 0; i < poolEnemy2[currentWaves]; i++) + { + Spawn(spawnEnemy2); + } + //spawn enemy3 + for (int i = 0; i < poolEnemy3[currentWaves]; i++) + { + Spawn(spawnEnemy3); + } + } + } + } - void Spawn () + void Spawn(int spawnEnemy) { if (playerHealth.currentHealth <= 0f) {