プレーヤーのステータス⑤(ゲームオーバーシーンの作成)
リトライとゲームオーバーの切り分け
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
// ★★★(追加)
using UnityEngine.SceneManagement;
public class PlayerHealth : MonoBehaviour
{
public GameObject effectPrefab;
public AudioClip damageSound;
public AudioClip destroySound;
public int playerHP;
public Slider hpSlider;
public GameObject[] playerIcons;
private int destroyCount = 0;
private void Start()
{
hpSlider.maxValue = playerHP;
hpSlider.value = playerHP;
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("EnemyMissile"))
{
playerHP -= 1;
AudioSource.PlayClipAtPoint(damageSound, Camera.main.transform.position);
Destroy(other.gameObject);
hpSlider.value = playerHP;
if (playerHP == 0)
{
GameObject effect = Instantiate(effectPrefab, transform.position, Quaternion.identity);
Destroy(effect, 1.0f);
AudioSource.PlayClipAtPoint(destroySound, Camera.main.transform.position);
this.gameObject.SetActive(false);
destroyCount += 1;
UpdatePlayerIcons();
// ★★★(追加)
// 破壊された回数によって場合分けを行います。
if (destroyCount < 5) // ここの条件は自分のゲームに合わせましょう!
{
// リトライ
Invoke("Retry", 1.0f);
}
else
{
// ゲームオーバー
SceneManager.LoadScene("GameOver");
// destroyCountをリセット
destroyCount = 0;
}
}
}
}
void UpdatePlayerIcons()
{
for (int i = 0; i < playerIcons.Length; i++)
{
if (destroyCount <= i)
{
playerIcons[i].SetActive(true);
}
else
{
playerIcons[i].SetActive(false);
}
}
}
void Retry()
{
this.gameObject.SetActive(true);
playerHP = 3;
hpSlider.value = playerHP;
}
}
【2019版】Danmaku I(基礎1/全22回)
他のコースを見るリトライとゲームオーバーの切り分け
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
// ★★★(追加)
using UnityEngine.SceneManagement;
public class PlayerHealth : MonoBehaviour
{
public GameObject effectPrefab;
public AudioClip damageSound;
public AudioClip destroySound;
public int playerHP;
public Slider hpSlider;
public GameObject[] playerIcons;
private int destroyCount = 0;
private void Start()
{
hpSlider.maxValue = playerHP;
hpSlider.value = playerHP;
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("EnemyMissile"))
{
playerHP -= 1;
AudioSource.PlayClipAtPoint(damageSound, Camera.main.transform.position);
Destroy(other.gameObject);
hpSlider.value = playerHP;
if (playerHP == 0)
{
GameObject effect = Instantiate(effectPrefab, transform.position, Quaternion.identity);
Destroy(effect, 1.0f);
AudioSource.PlayClipAtPoint(destroySound, Camera.main.transform.position);
this.gameObject.SetActive(false);
destroyCount += 1;
UpdatePlayerIcons();
// ★★★(追加)
// 破壊された回数によって場合分けを行います。
if (destroyCount < 5) // ここの条件は自分のゲームに合わせましょう!
{
// リトライ
Invoke("Retry", 1.0f);
}
else
{
// ゲームオーバー
SceneManager.LoadScene("GameOver");
// destroyCountをリセット
destroyCount = 0;
}
}
}
}
void UpdatePlayerIcons()
{
for (int i = 0; i < playerIcons.Length; i++)
{
if (destroyCount <= i)
{
playerIcons[i].SetActive(true);
}
else
{
playerIcons[i].SetActive(false);
}
}
}
void Retry()
{
this.gameObject.SetActive(true);
playerHP = 3;
hpSlider.value = playerHP;
}
}
プレーヤーのステータス⑤(ゲームオーバーシーンの作成)