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: