前提・実現したいこと
●前提・問題
Unityで30秒以内に1体の敵を倒すゲームを作成しています。
EnemyHealth.csで敵のHPが0になった際に敵を破壊しゲームクリアという条件です。
TimeDirector.cs内で30秒をすぎるとゲームオーバー画面に遷移するようにしています。
しかし敵を倒してもタイマーが止まらないためゲームオーバー画面に遷移してしまいます。
●実装したいこと
敵のHPがなくなった際にゲームクリアにしたいので
if (enemyHP == 0)の時に
Time.deltaTimeの時間処理を止めたいです。
該当のソースコード
●タイマーの設定
cs
1using UnityEngine.UI; 2using UnityEngine.SceneManagement; 3 4public class TimeDirector : MonoBehaviour 5{ 6 GameObject timerText; 7 float time = 30.0f; 8 9 void Start() 10 { 11 this.timerText = GameObject.Find("Time"); 12 } 13 14 void Update() 15 { 16 this.time -= Time.deltaTime; 17 this.timerText.GetComponent<Text>().text = 18 "地球滅亡まであと" + this.time.ToString("F1") + "秒"; 19 20 if (this.time <= 0) 21 { 22 SceneManager.LoadScene("GameOverScene"); 23 } 24 } 25}
●敵のHP操作と敵の破壊
cs
1using UnityEngine; 2using UnityEngine.UI; 3 4public class EnemyHealth : MonoBehaviour 5{ 6 public GameObject particleObject; 7 public GameObject effectPrefab; 8 public int enemyHP; 9 private Slider slider; 10 11 private void Start() 12 { 13 slider = GameObject.Find("EnemyHPSlider").GetComponent<Slider>(); 14 slider.maxValue = enemyHP; 15 slider.value = enemyHP; 16 } 17 18 private void OnTriggerEnter(Collider other) 19 { 20 if (other.gameObject.CompareTag("Bullet")) 21 { 22 enemyHP -= 1; 23 slider.value = enemyHP; 24 Destroy(other.gameObject); 25 26 if (enemyHP == 0) 27 { 28 Instantiate(particleObject, this.transform.position, Quaternion.identity); 29 Destroy(transform.gameObject); 30 31 } 32 } 33 } 34}
EnemyHealth.csのif文の中に
タイマーを呼び出して止めるような処理を行うのかと考えたのですが
書き方がわかりません。
初歩的なところかもしれないのですが
ご教授いただければと思います。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/17 10:55