アイテムシステムの作成④(バリアアイテム)



バリア
using UnityEngine;
public class Barrier : MonoBehaviour
{
public AudioClip guardSound;
public AudioClip destroySound;
private int HP = 5;
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("EnemyMissile"))
{
HP -= 1;
Destroy(other.gameObject);
print(HP);
if (HP > 0)
{
AudioSource.PlayClipAtPoint(guardSound, Camera.main.transform.position);
}
else
{
AudioSource.PlayClipAtPoint(destroySound, Camera.main.transform.position);
Destroy(this.gameObject);
}
}
}
}



バリアの発動
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;
private AttackController attackController;
// ★追加
public GameObject barrierPrefab;
void Start()
{
itemIcon.sprite = itemDatabase.itemList[num].itemIcon;
UpdateUI();
playerHP = GetComponent<PlayerHP>();
attackController = GetComponent<AttackController>();
}
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();
}
if (InputManager.isa.Player.Item.triggered)
{
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 if(currentItemName == "RapidFire")
{
attackController.RapidON();
}
// ★バリア
else if(currentItemName == "Barrier")
{
// プレーヤーの位置にバリアを生成
GameObject barrier = Instantiate(barrierPrefab, transform.position, Quaternion.identity);
// その位置でプレーヤーと親子関係にする
barrier.transform.parent = this.gameObject.transform;
}
}
else
{
AudioSource.PlayClipAtPoint(ngSound, Camera.main.transform.position);
}
}
}
public void UpdateUI()
{
itemCountLabel.text = "" + itemDatabase.itemList[num].itemCount;
}
}



【Unity6版】Danmaku(全20回)
他のコースを見る


バリア
using UnityEngine;
public class Barrier : MonoBehaviour
{
public AudioClip guardSound;
public AudioClip destroySound;
private int HP = 5;
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("EnemyMissile"))
{
HP -= 1;
Destroy(other.gameObject);
print(HP);
if (HP > 0)
{
AudioSource.PlayClipAtPoint(guardSound, Camera.main.transform.position);
}
else
{
AudioSource.PlayClipAtPoint(destroySound, Camera.main.transform.position);
Destroy(this.gameObject);
}
}
}
}



バリアの発動
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;
private AttackController attackController;
// ★追加
public GameObject barrierPrefab;
void Start()
{
itemIcon.sprite = itemDatabase.itemList[num].itemIcon;
UpdateUI();
playerHP = GetComponent<PlayerHP>();
attackController = GetComponent<AttackController>();
}
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();
}
if (InputManager.isa.Player.Item.triggered)
{
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 if(currentItemName == "RapidFire")
{
attackController.RapidON();
}
// ★バリア
else if(currentItemName == "Barrier")
{
// プレーヤーの位置にバリアを生成
GameObject barrier = Instantiate(barrierPrefab, transform.position, Quaternion.identity);
// その位置でプレーヤーと親子関係にする
barrier.transform.parent = this.gameObject.transform;
}
}
else
{
AudioSource.PlayClipAtPoint(ngSound, Camera.main.transform.position);
}
}
}
public void UpdateUI()
{
itemCountLabel.text = "" + itemDatabase.itemList[num].itemCount;
}
}



アイテムシステムの作成④(バリアアイテム)