アイテムシステムの作成②(HP回復アイテム)

HPの回復
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class PlayerHP : MonoBehaviour
{
private int maxHP = 3;
private int HP;
public GameObject effectPrefab;
public Slider HPSlider;
void Start()
{
HP = maxHP;
HPSlider.maxValue = HP;
HPSlider.value = HP;
}
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("EnemyMissile"))
{
HP -= 1;
HPSlider.value = HP;
Destroy(other.gameObject);
GameObject effect = Instantiate(effectPrefab, transform.position, Quaternion.identity);
Destroy(effect, 1.0f);
if (HP < 1)
{
Destroy(this.gameObject);
SceneManager.LoadScene("GameOver");
}
}
}
// ★追加
// HP回復
public void AddHP()
{
HP += 5;
if (HP > maxHP)
{
HP = maxHP;
}
HPSlider.value = HP;
}
}
アイテムの実行
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class ItemManager : MonoBehaviour
{
public ItemDatabase itemDatabase;
public Image itemIcon;
public TextMeshProUGUI itemCountLabel;
private int num = 0;
public AudioClip changeSound;
// ★追加
private PlayerHP playerHP;
public AudioClip okSound;
public AudioClip ngSound;
void Start()
{
itemIcon.sprite = itemDatabase.itemList[num].itemIcon;
UpdateUI();
// ★追加
playerHP = GetComponent<PlayerHP>();
}
void Update()
{
if (InputManager.isa.Player.ItemChange.triggered)
{
AudioSource.PlayClipAtPoint(changeSound, Camera.main.transform.position);
num = (num + 1) % itemDatabase.itemList.Count;
itemIcon.sprite = itemDatabase.itemList[num].itemIcon;
UpdateUI();
}
// ★追加
// アイテムの実行(Pボタン)
if (InputManager.isa.Player.Item.triggered)
{
// アイテムカウントが1以上残っている場合のみアイデムが実行可能
if (itemDatabase.itemList[num].itemCount > 0)
{
AudioSource.PlayClipAtPoint(okSound, Camera.main.transform.position);
itemDatabase.itemList[num].itemCount -= 1;
UpdateUI();
string currentItemName = itemDatabase.itemList[num].itemName;
if (currentItemName == "HP")
{
playerHP.AddHP();
}
}
else
{
// NGサウンド(アイテムの実行不可)
AudioSource.PlayClipAtPoint(ngSound, Camera.main.transform.position);
}
}
}
public void UpdateUI()
{
itemCountLabel.text = "" + itemDatabase.itemList[num].itemCount;
}
}



【Unity6版】Danmaku(全20回)
他のコースを見る
HPの回復
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class PlayerHP : MonoBehaviour
{
private int maxHP = 3;
private int HP;
public GameObject effectPrefab;
public Slider HPSlider;
void Start()
{
HP = maxHP;
HPSlider.maxValue = HP;
HPSlider.value = HP;
}
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("EnemyMissile"))
{
HP -= 1;
HPSlider.value = HP;
Destroy(other.gameObject);
GameObject effect = Instantiate(effectPrefab, transform.position, Quaternion.identity);
Destroy(effect, 1.0f);
if (HP < 1)
{
Destroy(this.gameObject);
SceneManager.LoadScene("GameOver");
}
}
}
// ★追加
// HP回復
public void AddHP()
{
HP += 5;
if (HP > maxHP)
{
HP = maxHP;
}
HPSlider.value = HP;
}
}
アイテムの実行
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class ItemManager : MonoBehaviour
{
public ItemDatabase itemDatabase;
public Image itemIcon;
public TextMeshProUGUI itemCountLabel;
private int num = 0;
public AudioClip changeSound;
// ★追加
private PlayerHP playerHP;
public AudioClip okSound;
public AudioClip ngSound;
void Start()
{
itemIcon.sprite = itemDatabase.itemList[num].itemIcon;
UpdateUI();
// ★追加
playerHP = GetComponent<PlayerHP>();
}
void Update()
{
if (InputManager.isa.Player.ItemChange.triggered)
{
AudioSource.PlayClipAtPoint(changeSound, Camera.main.transform.position);
num = (num + 1) % itemDatabase.itemList.Count;
itemIcon.sprite = itemDatabase.itemList[num].itemIcon;
UpdateUI();
}
// ★追加
// アイテムの実行(Pボタン)
if (InputManager.isa.Player.Item.triggered)
{
// アイテムカウントが1以上残っている場合のみアイデムが実行可能
if (itemDatabase.itemList[num].itemCount > 0)
{
AudioSource.PlayClipAtPoint(okSound, Camera.main.transform.position);
itemDatabase.itemList[num].itemCount -= 1;
UpdateUI();
string currentItemName = itemDatabase.itemList[num].itemName;
if (currentItemName == "HP")
{
playerHP.AddHP();
}
}
else
{
// NGサウンド(アイテムの実行不可)
AudioSource.PlayClipAtPoint(ngSound, Camera.main.transform.position);
}
}
}
public void UpdateUI()
{
itemCountLabel.text = "" + itemDatabase.itemList[num].itemCount;
}
}



アイテムシステムの作成②(HP回復アイテム)