From 031e9f339cd45c6af2cecc96930d42138510f2e3 Mon Sep 17 00:00:00 2001 From: 13519016 <13519016@std.stei.itb.ac.id> Date: Sat, 9 Apr 2022 00:37:29 +0700 Subject: [PATCH] perbaiki enemyManager --- Assets/Scenes/Level_01.unity | 14 +++--- Assets/Scenes/Level_02.unity | 4 +- Assets/Scripts/Managers/EnemyManager.cs | 36 +++++-------- Assets/Scripts/Managers/EnemyManager.cs.meta | 5 +- Assets/Scripts/Managers/EnemyManagerWave.cs | 50 +++++++++++++++++++ .../Scripts/Managers/EnemyManagerWave.cs.meta | 8 +++ 6 files changed, 83 insertions(+), 34 deletions(-) create mode 100644 Assets/Scripts/Managers/EnemyManagerWave.cs create mode 100644 Assets/Scripts/Managers/EnemyManagerWave.cs.meta diff --git a/Assets/Scenes/Level_01.unity b/Assets/Scenes/Level_01.unity index 9777a30..39c9cd6 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 8382e02..435434e 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 4f734e1..c286017 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 2473a11..2423de3 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 0000000..ea416d6 --- /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 0000000..2473a11 --- /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: -- GitLab