From 5a77753b170ddbfb44f9984c4af4d6db2d1c5c70 Mon Sep 17 00:00:00 2001 From: Nat10k <110515021+Nat10k@users.noreply.github.com> Date: Fri, 10 May 2024 09:51:30 +0700 Subject: [PATCH] fix : add grenade cooldown, invulnerability --- Assets/Prefabs/Player.prefab | 2 +- Assets/Scripts/Enemy/EnemyAttack.cs | 2 +- Assets/Scripts/Player/PlayerShooting.cs | 31 +++++++++++++------------ 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/Assets/Prefabs/Player.prefab b/Assets/Prefabs/Player.prefab index eeb8645..f736129 100644 --- a/Assets/Prefabs/Player.prefab +++ b/Assets/Prefabs/Player.prefab @@ -164,7 +164,7 @@ MonoBehaviour: m_EditorClassIdentifier: grenade: {fileID: 1105787354104060, guid: 41a4c48eef428174cb5039adb608d30c, type: 3} grenadeSpeed: 400 - grenadeFireDelay: 0.75 + grenadeFireDelay: 5 damagePercent: 1 weaponsList: - {fileID: 6517554577502634727, guid: 654eb4aab37345147a96aba1eaf65063, type: 3} diff --git a/Assets/Scripts/Enemy/EnemyAttack.cs b/Assets/Scripts/Enemy/EnemyAttack.cs index efd4005..f3d12a7 100644 --- a/Assets/Scripts/Enemy/EnemyAttack.cs +++ b/Assets/Scripts/Enemy/EnemyAttack.cs @@ -79,7 +79,7 @@ namespace Nightmare void Update () { - if (isPaused) + if (isPaused || EnemyMovement.isFreeze) return; // Add the time since Update was last called to the timer. diff --git a/Assets/Scripts/Player/PlayerShooting.cs b/Assets/Scripts/Player/PlayerShooting.cs index 0a271f6..ec10c0c 100644 --- a/Assets/Scripts/Player/PlayerShooting.cs +++ b/Assets/Scripts/Player/PlayerShooting.cs @@ -15,7 +15,7 @@ namespace Nightmare { public GameObject grenade; public float grenadeSpeed = 200f; - public float grenadeFireDelay = 0.5f; + public float grenadeFireDelay = 5f; public float damagePercent = 1; int grenadeStock = int.MaxValue; @@ -25,6 +25,7 @@ namespace Nightmare private int currWeaponIdx; [SerializeField] Transform weaponPos; float realWeaponDamage; + private bool isShootingGrenade; // For skill cutscene PlayableDirector director; @@ -46,7 +47,7 @@ namespace Nightmare timer = 0; grenadeTimer = 0; ChangeWeapon(0); - AdjustGrenadeStock(0); + isShootingGrenade = false; GameObject directorObject = GameObject.Find("Timeline"); @@ -191,7 +192,7 @@ namespace Nightmare void Shoot () { - if (timer >= currWeapon.timeBetweenBullets && Time.timeScale != 0) + if (timer >= currWeapon.timeBetweenBullets && Time.timeScale != 0 && !isShootingGrenade) { // Reset the timer. timer = 0f; @@ -212,18 +213,15 @@ namespace Nightmare public void CollectGrenade() { - AdjustGrenadeStock(1); } - private void AdjustGrenadeStock(int change) + public void ShootGrenade() { - grenadeStock += change; - GrenadeManager.grenades = grenadeStock; - } - - void ShootGrenade() - { - StartCoroutine(ShootCutscene()); + if (!isShootingGrenade && grenadeTimer >= grenadeFireDelay) + { + isShootingGrenade = true; + StartCoroutine(ShootCutscene()); + } //GameObject clone = Instantiate(grenade, transform.position, Quaternion.identity); //Grenade grenadeClone = clone.GetComponent<Grenade>(); @@ -244,10 +242,13 @@ namespace Nightmare // Unfreeze the enemies UnfreezeEnemies(); - AdjustGrenadeStock(-1); + for (int i=0; i<30; i++) + { + GameObject clone = PoolManager.Pull("Grenade", transform.position, Quaternion.identity); + EventManager.TriggerEvent("ShootGrenade", grenadeSpeed * transform.forward); + } grenadeTimer = 0; - GameObject clone = PoolManager.Pull("Grenade", transform.position, Quaternion.identity); - EventManager.TriggerEvent("ShootGrenade", grenadeSpeed * transform.forward); + isShootingGrenade = false; } public void FreezeEnemies() -- GitLab