diff --git a/Assets/Scenes/Level_01.unity b/Assets/Scenes/Level_01.unity
index 9777a30b387860ca26214699926fceb0f79fb327..39c9cd641ed559290a511be59fa9ace221bcb3fc 100644
--- a/Assets/Scenes/Level_01.unity
+++ b/Assets/Scenes/Level_01.unity
@@ -38,7 +38,7 @@ RenderSettings:
   m_ReflectionIntensity: 1
   m_CustomReflection: {fileID: 0}
   m_Sun: {fileID: 0}
-  m_IndirectSpecularColor: {r: 0.45061505, g: 0.498609, b: 0.56437516, a: 1}
+  m_IndirectSpecularColor: {r: 0.45061463, g: 0.4986083, b: 0.5643749, a: 1}
   m_UseRadianceAmbientProbe: 0
 --- !u!157 &3
 LightmapSettings:
@@ -762,13 +762,13 @@ MonoBehaviour:
   m_GameObject: {fileID: 240257946}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 76a99222b1e4a384e923ac7e86efc709, type: 3}
+  m_Script: {fileID: 11500000, guid: 3e4449d7cdf76dd4ba03b989a21e7fd4, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
   playerHealth: {fileID: 33458251}
-  enemy: {fileID: 1206665591, guid: f264ab47e25d0374ba89abced0b94b2a, type: 3}
+  enemy: {fileID: 153412, guid: 548c56f4bcf4db24b8aa057e9846a005, type: 3}
   spawnEnemy: 2
-  spawnTime: 5
+  spawnTime: 3
   spawnPoints:
   - {fileID: 36326048}
   factory: {fileID: 180263585}
@@ -781,7 +781,7 @@ MonoBehaviour:
   m_GameObject: {fileID: 240257946}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 76a99222b1e4a384e923ac7e86efc709, type: 3}
+  m_Script: {fileID: 11500000, guid: 3e4449d7cdf76dd4ba03b989a21e7fd4, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
   playerHealth: {fileID: 33458251}
@@ -800,11 +800,11 @@ MonoBehaviour:
   m_GameObject: {fileID: 240257946}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 76a99222b1e4a384e923ac7e86efc709, type: 3}
+  m_Script: {fileID: 11500000, guid: 3e4449d7cdf76dd4ba03b989a21e7fd4, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
   playerHealth: {fileID: 33458251}
-  enemy: {fileID: 2022850296, guid: 73871ddf5c8d02442be00d9671a9d510, type: 3}
+  enemy: {fileID: 100002, guid: e5171f72421770240bd7c3989fe351e3, type: 3}
   spawnEnemy: 0
   spawnTime: 3
   spawnPoints:
diff --git a/Assets/Scenes/Level_02.unity b/Assets/Scenes/Level_02.unity
index 8382e02942d95014536e916fe266be7f8031886b..435434e54f355ff6c8fabb803dd46e6f42a77d75 100644
--- a/Assets/Scenes/Level_02.unity
+++ b/Assets/Scenes/Level_02.unity
@@ -844,8 +844,8 @@ MonoBehaviour:
   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}
+  size: {x: 0, y: 0, z: 0}
+  factory: {fileID: 0}
 --- !u!4 &240257950
 Transform:
   m_ObjectHideFlags: 0
diff --git a/Assets/Scripts/Managers/EnemyManager.cs b/Assets/Scripts/Managers/EnemyManager.cs
index 4f734e1f62fd53777f8428cc89d2da0d342ac3d1..c2860170d75456a68b8dd6b8e7d67d3857c27b74 100644
--- a/Assets/Scripts/Managers/EnemyManager.cs
+++ b/Assets/Scripts/Managers/EnemyManager.cs
@@ -1,7 +1,6 @@
-using System.Collections;
+using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
-using UnityEngine.AI;
 
 public class EnemyManager : MonoBehaviour
 {
@@ -9,42 +8,31 @@ public class EnemyManager : MonoBehaviour
     public GameObject enemy;
     public int spawnEnemy;
     public float spawnTime = 3f;
-    public Vector3 spawnPointsCenter;
-    public Vector3 spawnRotation;
-    public Vector3 size;
-    UnityEngine.AI.NavMeshAgent nav;
-    int floorMask;
+    public Transform[] spawnPoints;
+
     [SerializeField]
     public MonoBehaviour factory;
     IFactory Factory { get { return factory as IFactory; } }
 
-    void Start ()
+    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);
     }
 
 
-    void Spawn ()
+    void Spawn()
     {
         if (playerHealth.currentHealth <= 0f)
         {
             return;
         }
-        NavMeshHit hit;
-        bool search = true;
-        while (search)
-        {
-            Vector3 pos = spawnPointsCenter + new Vector3(Random.Range(-size.x / 2, size.x / 2), 0.5f, Random.Range(-size.z / 2, size.z / 2));
-            if (NavMesh.SamplePosition(pos, out hit, 1f, NavMesh.AllAreas))
-            {
-                Quaternion quaternion = Quaternion.Euler(spawnRotation.x, spawnRotation.y, spawnRotation.z);
-                // Menduplikasi enemy
-                Instantiate(Factory.FactoryMethod(spawnEnemy), pos, quaternion);
-                search = false;
-            }
-        }
+
+        int spawnPointIndex = Random.Range(0, spawnPoints.Length);
+
+        // Menduplikasi enemy
+        Instantiate(Factory.FactoryMethod(spawnEnemy), spawnPoints[spawnPointIndex].position, spawnPoints[spawnPointIndex].rotation);
+
+
     }
 }
diff --git a/Assets/Scripts/Managers/EnemyManager.cs.meta b/Assets/Scripts/Managers/EnemyManager.cs.meta
index 2473a11211ca4eda98de481734fbe63d9a8f4863..2423de34b85e17bb4d0c92ce40eeb48a2b3445c9 100644
--- a/Assets/Scripts/Managers/EnemyManager.cs.meta
+++ b/Assets/Scripts/Managers/EnemyManager.cs.meta
@@ -1,8 +1,11 @@
 fileFormatVersion: 2
-guid: 76a99222b1e4a384e923ac7e86efc709
+guid: 3e4449d7cdf76dd4ba03b989a21e7fd4
 MonoImporter:
+  externalObjects: {}
   serializedVersion: 2
   defaultReferences: []
   executionOrder: 0
   icon: {instanceID: 0}
   userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Managers/EnemyManagerWave.cs b/Assets/Scripts/Managers/EnemyManagerWave.cs
new file mode 100644
index 0000000000000000000000000000000000000000..ea416d6d99fa82c290a3e0ef7fdb1b5bd102c674
--- /dev/null
+++ b/Assets/Scripts/Managers/EnemyManagerWave.cs
@@ -0,0 +1,50 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.AI;
+
+public class EnemyManagerWave : MonoBehaviour
+{
+    public PlayerHealth playerHealth;
+    public GameObject enemy;
+    public int spawnEnemy;
+    public float spawnTime = 3f;
+    public Vector3 spawnPointsCenter;
+    public Vector3 spawnRotation;
+    public Vector3 size;
+    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);
+    }
+
+
+    void Spawn ()
+    {
+        if (playerHealth.currentHealth <= 0f)
+        {
+            return;
+        }
+        NavMeshHit hit;
+        bool search = true;
+        while (search)
+        {
+            Vector3 pos = spawnPointsCenter + new Vector3(Random.Range(-size.x / 2, size.x / 2), 0.5f, Random.Range(-size.z / 2, size.z / 2));
+            if (NavMesh.SamplePosition(pos, out hit, 1f, NavMesh.AllAreas))
+            {
+                Quaternion quaternion = Quaternion.Euler(spawnRotation.x, spawnRotation.y, spawnRotation.z);
+                // Menduplikasi enemy
+                Instantiate(Factory.FactoryMethod(spawnEnemy), pos, quaternion);
+                search = false;
+            }
+        }
+    }
+}
diff --git a/Assets/Scripts/Managers/EnemyManagerWave.cs.meta b/Assets/Scripts/Managers/EnemyManagerWave.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..2473a11211ca4eda98de481734fbe63d9a8f4863
--- /dev/null
+++ b/Assets/Scripts/Managers/EnemyManagerWave.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 76a99222b1e4a384e923ac7e86efc709
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: