プレーヤーのステータス④(リトライの仕組みを作る)
![E0dae900 3da9 42b1 a7f6 cfc8d9ae5310](https://codegenius.org/uploads/slide/image/204/e0dae900-3da9-42b1-a7f6-cfc8d9ae5310.jpeg)
![2790d321 6a51 4ac7 be47 6c97c529e687](https://codegenius.org/uploads/slide/image/205/2790d321-6a51-4ac7-be47-6c97c529e687.jpeg)
リトライの仕組みを作る
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class PlayerHealth : MonoBehaviour
{
public GameObject effectPrefab;
public AudioClip damageSound;
public AudioClip destroySound;
public int playerHP;
private Slider playerHPSlider;
public GameObject[] playerIcons;
public int destroyCount = 0;
private void Start()
{
playerHPSlider = GameObject.Find("PlayerHPSlider").GetComponent<Slider>();
playerHPSlider.maxValue = playerHP;
playerHPSlider.value = playerHP;
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("EnemyMissile"))
{
playerHP -= 1;
AudioSource.PlayClipAtPoint(damageSound, Camera.main.transform.position);
playerHPSlider.value = playerHP;
Destroy(other.gameObject);
if (playerHP == 0)
{
destroyCount += 1;
UpdatePlayerIcons();
GameObject effect = Instantiate(effectPrefab, transform.position, Quaternion.identity);
Destroy(effect, 1.0f);
AudioSource.PlayClipAtPoint(destroySound, Camera.main.transform.position);
this.gameObject.SetActive(false);
// ★★(追加)
// リトライの命令ブロックを1秒後に呼び出す。
Invoke("Retry", 1.0f);
}
}
}
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; // ここの数字は自分が決めたプレーヤーのHP数にすること。
playerHPSlider.value = playerHP;
}
}
![B2b81e88 677e 477e 8ea9 b8dfa3f6cc78](https://codegenius.org/uploads/slide/image/206/b2b81e88-677e-477e-8ea9-b8dfa3f6cc78.jpeg)
Danmaku I(基礎1/全22回)
他のコースを見る![E0dae900 3da9 42b1 a7f6 cfc8d9ae5310](https://codegenius.org/uploads/slide/image/204/e0dae900-3da9-42b1-a7f6-cfc8d9ae5310.jpeg)
![2790d321 6a51 4ac7 be47 6c97c529e687](https://codegenius.org/uploads/slide/image/205/2790d321-6a51-4ac7-be47-6c97c529e687.jpeg)
リトライの仕組みを作る
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class PlayerHealth : MonoBehaviour
{
public GameObject effectPrefab;
public AudioClip damageSound;
public AudioClip destroySound;
public int playerHP;
private Slider playerHPSlider;
public GameObject[] playerIcons;
public int destroyCount = 0;
private void Start()
{
playerHPSlider = GameObject.Find("PlayerHPSlider").GetComponent<Slider>();
playerHPSlider.maxValue = playerHP;
playerHPSlider.value = playerHP;
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("EnemyMissile"))
{
playerHP -= 1;
AudioSource.PlayClipAtPoint(damageSound, Camera.main.transform.position);
playerHPSlider.value = playerHP;
Destroy(other.gameObject);
if (playerHP == 0)
{
destroyCount += 1;
UpdatePlayerIcons();
GameObject effect = Instantiate(effectPrefab, transform.position, Quaternion.identity);
Destroy(effect, 1.0f);
AudioSource.PlayClipAtPoint(destroySound, Camera.main.transform.position);
this.gameObject.SetActive(false);
// ★★(追加)
// リトライの命令ブロックを1秒後に呼び出す。
Invoke("Retry", 1.0f);
}
}
}
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; // ここの数字は自分が決めたプレーヤーのHP数にすること。
playerHPSlider.value = playerHP;
}
}
![B2b81e88 677e 477e 8ea9 b8dfa3f6cc78](https://codegenius.org/uploads/slide/image/206/b2b81e88-677e-477e-8ea9-b8dfa3f6cc78.jpeg)
プレーヤーのステータス④(リトライの仕組みを作る)