プレーヤーのHPを回復させるアイテムの作成
![231f616d e440 4e48 84c9 a8f1c2657499](https://codegenius.org/uploads/slide/image/6044/231f616d-e440-4e48-84c9-a8f1c2657499.jpeg)
![17eaefd0 eba0 4c6a 8094 44de444868f2](https://codegenius.org/uploads/slide/image/6045/17eaefd0-eba0-4c6a-8094-44de444868f2.jpeg)
HPを増加させるメソッド
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class TankHealth : MonoBehaviour
{
[SerializeField]
private GameObject effectPrefab1;
[SerializeField]
private GameObject effectPrefab2;
public int tankHP;
[SerializeField]
private Text HPLabel;
// ★追加
// HPの最大値を設定する(最大値は自由)
public int tankMaxHP = 5;
void Start()
{
// ★追加
tankHP = tankMaxHP;
HPLabel.text = "HP:" + tankHP;
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "EnemyShell")
{
tankHP -= 1;
HPLabel.text = "HP:" + tankHP;
Destroy(other.gameObject);
if (tankHP > 0)
{
GameObject effect1 = Instantiate(effectPrefab1, transform.position, Quaternion.identity);
Destroy(effect1, 1.0f);
}
else
{
GameObject effect2 = Instantiate(effectPrefab2, transform.position, Quaternion.identity);
Destroy(effect2, 1.0f);
this.gameObject.SetActive(false);
Invoke("GoToGameOver", 1.5f);
}
}
}
void GoToGameOver()
{
SceneManager.LoadScene("GameOver");
}
// ★追加
// publicをつけること(重要ポイント)
public void AddHP(int amount)
{
tankHP += amount;
// ここは何をコントロールしている考えてみましょう!
if (tankHP > tankMaxHP)
{
tankHP = tankMaxHP;
}
HPLabel.text = "HP:" + tankHP;
}
}
![E69db6ce d7da 4e48 867d 0e6c46b2ac6d](https://codegenius.org/uploads/slide/image/6046/e69db6ce-d7da-4e48-867d-0e6c46b2ac6d.jpeg)
HPを回復させるアイテム
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HPItem : MonoBehaviour
{
[SerializeField]
private GameObject effectPrefab;
[SerializeField]
private AudioClip getSound;
private TankHealth th;
private int reward = 3; // いくつ回復させるかは自由!
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Player")
{
// Find()メソッドの使い方をマスターすること
th = GameObject.Find("Tank").GetComponent<TankHealth>();
// AddHP()メソッドを呼び出して「引数」にrewardを与えている。
th.AddHP(reward);
Destroy(gameObject);
GameObject effect = Instantiate(effectPrefab, transform.position, Quaternion.identity);
Destroy(effect, 0.5f);
AudioSource.PlayClipAtPoint(getSound, transform.position);
}
}
}
![3a0ae899 84fe 48e6 a86c c4da4922c3d8](https://codegenius.org/uploads/slide/image/6047/3a0ae899-84fe-48e6-a86c-c4da4922c3d8.jpeg)
![B4bee27a 72a2 41d4 9dcd 413c7a71c9d3](https://codegenius.org/uploads/slide/image/6048/b4bee27a-72a2-41d4-9dcd-413c7a71c9d3.jpeg)
【2020版】BattleTank(基礎/全35回)
他のコースを見る![231f616d e440 4e48 84c9 a8f1c2657499](https://codegenius.org/uploads/slide/image/6044/231f616d-e440-4e48-84c9-a8f1c2657499.jpeg)
![17eaefd0 eba0 4c6a 8094 44de444868f2](https://codegenius.org/uploads/slide/image/6045/17eaefd0-eba0-4c6a-8094-44de444868f2.jpeg)
HPを増加させるメソッド
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class TankHealth : MonoBehaviour
{
[SerializeField]
private GameObject effectPrefab1;
[SerializeField]
private GameObject effectPrefab2;
public int tankHP;
[SerializeField]
private Text HPLabel;
// ★追加
// HPの最大値を設定する(最大値は自由)
public int tankMaxHP = 5;
void Start()
{
// ★追加
tankHP = tankMaxHP;
HPLabel.text = "HP:" + tankHP;
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "EnemyShell")
{
tankHP -= 1;
HPLabel.text = "HP:" + tankHP;
Destroy(other.gameObject);
if (tankHP > 0)
{
GameObject effect1 = Instantiate(effectPrefab1, transform.position, Quaternion.identity);
Destroy(effect1, 1.0f);
}
else
{
GameObject effect2 = Instantiate(effectPrefab2, transform.position, Quaternion.identity);
Destroy(effect2, 1.0f);
this.gameObject.SetActive(false);
Invoke("GoToGameOver", 1.5f);
}
}
}
void GoToGameOver()
{
SceneManager.LoadScene("GameOver");
}
// ★追加
// publicをつけること(重要ポイント)
public void AddHP(int amount)
{
tankHP += amount;
// ここは何をコントロールしている考えてみましょう!
if (tankHP > tankMaxHP)
{
tankHP = tankMaxHP;
}
HPLabel.text = "HP:" + tankHP;
}
}
![E69db6ce d7da 4e48 867d 0e6c46b2ac6d](https://codegenius.org/uploads/slide/image/6046/e69db6ce-d7da-4e48-867d-0e6c46b2ac6d.jpeg)
HPを回復させるアイテム
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HPItem : MonoBehaviour
{
[SerializeField]
private GameObject effectPrefab;
[SerializeField]
private AudioClip getSound;
private TankHealth th;
private int reward = 3; // いくつ回復させるかは自由!
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Player")
{
// Find()メソッドの使い方をマスターすること
th = GameObject.Find("Tank").GetComponent<TankHealth>();
// AddHP()メソッドを呼び出して「引数」にrewardを与えている。
th.AddHP(reward);
Destroy(gameObject);
GameObject effect = Instantiate(effectPrefab, transform.position, Quaternion.identity);
Destroy(effect, 0.5f);
AudioSource.PlayClipAtPoint(getSound, transform.position);
}
}
}
![3a0ae899 84fe 48e6 a86c c4da4922c3d8](https://codegenius.org/uploads/slide/image/6047/3a0ae899-84fe-48e6-a86c-c4da4922c3d8.jpeg)
![B4bee27a 72a2 41d4 9dcd 413c7a71c9d3](https://codegenius.org/uploads/slide/image/6048/b4bee27a-72a2-41d4-9dcd-413c7a71c9d3.jpeg)
プレーヤーのHPを回復させるアイテムの作成