diff --git a/Assets/Scenes/Level_01.unity b/Assets/Scenes/Level_01.unity index 69ca4b2764c88cc36e29bf4ad49debca719a19e9..d8f98bce1fc0930b0884e66d8c1257dbdfe94eb1 100644 --- a/Assets/Scenes/Level_01.unity +++ b/Assets/Scenes/Level_01.unity @@ -6131,7 +6131,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: damagePerShot: 20 - damagePerShotMax: 50 + damagePerShotMax: 100 timeBetweenBullets: 0.15 range: 100 text: {fileID: 1214467935} @@ -7543,7 +7543,8 @@ MonoBehaviour: type: 3} respawnTime: 5 center: {x: 0, y: 0, z: 0} - size: {x: 20, y: 20, z: 20} + size: {x: 30, y: 30, z: 30} + player: {fileID: 33458244} --- !u!114 &1901065586 MonoBehaviour: m_ObjectHideFlags: 0 @@ -7560,7 +7561,8 @@ MonoBehaviour: type: 3} respawnTime: 5 center: {x: 0, y: 0, z: 0} - size: {x: 20, y: 20, z: 20} + size: {x: 30, y: 30, z: 30} + player: {fileID: 33458244} --- !u!114 &1901065587 MonoBehaviour: m_ObjectHideFlags: 0 @@ -7577,7 +7579,8 @@ MonoBehaviour: type: 3} respawnTime: 5 center: {x: 0, y: 0, z: 0} - size: {x: 20, y: 20, z: 20} + size: {x: 30, y: 30, z: 30} + player: {fileID: 33458244} --- !u!1 &2070728228 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Orb/HealthOrb.cs b/Assets/Scripts/Orb/HealthOrb.cs index 33038cd441639425eae0c208a1b0f68549965b18..0f799b5686e1add5151fc0eb64f51f55de060e68 100644 --- a/Assets/Scripts/Orb/HealthOrb.cs +++ b/Assets/Scripts/Orb/HealthOrb.cs @@ -5,7 +5,18 @@ using UnityEngine; public class HealthOrb : MonoBehaviour { public int healthCure = 50; - GameObject player; + public float interval = 5f; + private GameObject player; + + private void Update(){ + // mendestroy orb setelah interval waktu + if (interval > 0){ + interval -= Time.deltaTime; + } else { + enabled = false; + Destroy(gameObject, 0f); + } + } private void OnTriggerEnter(Collider other) { diff --git a/Assets/Scripts/Orb/PowerOrb.cs b/Assets/Scripts/Orb/PowerOrb.cs index 1129f3a1e16a4c2cd60f2c52d965a8897ff42009..20c708be5306dbd2755805e495e3d518d6f9740b 100644 --- a/Assets/Scripts/Orb/PowerOrb.cs +++ b/Assets/Scripts/Orb/PowerOrb.cs @@ -5,8 +5,19 @@ using UnityEngine; public class PowerOrb : MonoBehaviour { public int powerBoost = 10; - GameObject player; - GameObject gunBarrelEnd; + public float interval = 5f; + private GameObject player; + private GameObject gunBarrelEnd; + + private void Update(){ + // mendestroy orb setelah interval waktu + if (interval > 0){ + interval -= Time.deltaTime; + } else { + enabled = false; + Destroy(gameObject, 0f); + } + } private void OnTriggerEnter(Collider other) { diff --git a/Assets/Scripts/Orb/Spawner.cs b/Assets/Scripts/Orb/Spawner.cs index e7d50ffe6169c626241fe52c94e7a4d1a7db8118..ce5c919b5fc037463386c93e712fa14620aba79e 100644 --- a/Assets/Scripts/Orb/Spawner.cs +++ b/Assets/Scripts/Orb/Spawner.cs @@ -7,21 +7,30 @@ public class Spawner : MonoBehaviour public GameObject orbPrefab; public float respawnTime = 5.0f; public Vector3 center; - public Vector3 size = new Vector3(20f, 20f, 20f); + public Vector3 size = new Vector3(30f, 30f, 30f); + public GameObject player; + private GameObject gunBarrelEnd; void Start() { - StartCoroutine(OrbWave()); + InvokeRepeating("SpawnOrb", respawnTime, respawnTime); } - IEnumerator OrbWave(){ - while(true){ - yield return new WaitForSeconds(respawnTime); - SpawnOrb(); + private void SpawnOrb(){ + gunBarrelEnd = player.transform.Find("GunBarrelEnd").gameObject; + PlayerShooting playerShooting = gunBarrelEnd.GetComponent<PlayerShooting>(); + PlayerMovement playerMovement = player.GetComponent<PlayerMovement>(); + + // Speed Orb berhenti di spawn apabila kecepatan player sudah maksimal + if (orbPrefab.name == "SpeedOrb" && playerMovement.speed == playerMovement.maxSpeed){ + return; + } + + // Power Orb berhenti di spawn apabila kekuatan player sudah maksimal + if (orbPrefab.name == "PowerOrb" && playerShooting.damagePerShot == playerShooting.damagePerShotMax){ + return; } - } - private void SpawnOrb(){ Vector3 pos = center + new Vector3(Random.Range(-size.x/2, size.x/2), 0.5f,Random.Range(-size.z/2, size.z/2)); Instantiate(orbPrefab, pos, Quaternion.identity); } diff --git a/Assets/Scripts/Orb/SpeedOrb.cs b/Assets/Scripts/Orb/SpeedOrb.cs index 21e50301e42a227c394856a3329a5b1536776b8a..53645e716d7b39aacc4497d7b9d98c16f5d283fd 100644 --- a/Assets/Scripts/Orb/SpeedOrb.cs +++ b/Assets/Scripts/Orb/SpeedOrb.cs @@ -5,7 +5,18 @@ using UnityEngine; public class SpeedOrb : MonoBehaviour { public float speedBoost = 3f; - GameObject player; + public float interval = 5f; + private GameObject player; + + private void Update(){ + // mendestroy orb setelah interval waktu + if (interval > 0){ + interval -= Time.deltaTime; + } else { + enabled = false; + Destroy(gameObject, 0f); + } + } private void OnTriggerEnter(Collider other) { diff --git a/Assets/Scripts/Player/PlayerHealth.cs b/Assets/Scripts/Player/PlayerHealth.cs index 01d3b1f114878a5604e8a97ba2eb252e09cdb005..75a8c2b7246f818500efcbd0faa27c9503c103b4 100644 --- a/Assets/Scripts/Player/PlayerHealth.cs +++ b/Assets/Scripts/Player/PlayerHealth.cs @@ -90,10 +90,10 @@ public class PlayerHealth : MonoBehaviour        SceneManager.LoadScene(0); } - public void TakeCure(int amount) + public void TakeCure(int amount) { int addedHealth = currentHealth + amount; - if (addedHealth > startingHealth){ + if (addedHealth >= startingHealth){ currentHealth = startingHealth; } else{ currentHealth = addedHealth; diff --git a/Assets/Scripts/Player/PlayerMovement.cs b/Assets/Scripts/Player/PlayerMovement.cs index a8dc4ecb3a73d6ce4d4a181ff4716e84ac764531..459c0a5351a52a0772605b8fe5631fdbcb1e00e0 100644 --- a/Assets/Scripts/Player/PlayerMovement.cs +++ b/Assets/Scripts/Player/PlayerMovement.cs @@ -81,6 +81,11 @@ public class PlayerMovement : MonoBehaviour anim.SetBool("IsWalking", walking); } public void BoostSpeed(float amount){ - speed += amount; + float addedSpeed = speed + amount; + if (addedSpeed >= maxSpeed){ + speed = maxSpeed; + } else{ + speed = addedSpeed; + } } -} +} \ No newline at end of file diff --git a/Assets/Scripts/Player/PlayerShooting.cs b/Assets/Scripts/Player/PlayerShooting.cs index 42eecc96e450696c3bf10fed3a0db23f3274a49d..1301ca944d3af90b2f70556734079fa5cc4098ac 100644 --- a/Assets/Scripts/Player/PlayerShooting.cs +++ b/Assets/Scripts/Player/PlayerShooting.cs @@ -84,7 +84,12 @@ public class PlayerShooting : MonoBehaviour gunLine.SetPosition(1, shootRay.origin + shootRay.direction * range); } } - public void BoostPower(int amount){ - damagePerShot += amount; + public void BoostPower(int amount){ + int addedPower = damagePerShot + amount; + if (addedPower >= damagePerShotMax){ + damagePerShot = damagePerShotMax; + } else{ + damagePerShot = addedPower; + } } } \ No newline at end of file