今回は、プレーヤーにHPをつけて画面に表示する方法です。
1)HPを画面に表示する準備
まずはHPを画面に表示する準備です。
・「Canvas」を右クリック→「UI」を選択→「Text」を選択してクリック。
・名前は「TankHP」に変更しましょう。
・「表示する位置」はどこでも構いません。
・「テキストの大きさ(Font Size)」と「テキストの色(Color)」も自分の好みに変更してください。
さあこれで、HPを表示する画面の準備ができました。
2)スクリプの作成
・「C#スクリプト」を1つ作成してください。
・名前は「TankHealth」に変更しましょう。
・下記を参考にコードを記載してください。
*今回はTnakのHPが0になったら、ゲームが再びスタートするように設定してあります。
using UnityEngine;
using System.Collections;
// ★下記2つを追加すること
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class TankHealth : MonoBehaviour {
public GameObject effectPrefab1;
public GameObject effectPrefab2;
public int tankHP;
public Text tankHPLabel;
void Start(){
tankHPLabel.text = "HP: " + tankHP;
}
void OnCollisionEnter(Collision other){
if(other.gameObject.CompareTag("EnemyShell")){
tankHP -= 1;
tankHPLabel.text = "HP: " + tankHP;
if(tankHP > 0){
GameObject effect1 = Instantiate(effectPrefab1, transform.position, Quaternion.identity) as GameObject;
Destroy(effect1, 1.0f);
Destroy(other.gameObject);
} else {
GameObject effect2 = Instantiate(effectPrefab2, transform.position, Quaternion.identity) as GameObject;
Destroy(effect2, 1.0f);
Destroy(other.gameObject);
// HPが0になったらTank(プレーヤー)を画面から消す
gameObject.SetActive(false);
// 3秒後に「SceneChange」のスクリプトを呼び出す
Invoke("SceneChange", 3.0f);
}
}
}
// 「Mian」シーンに再び戻るメソッド(命令ブロック)
void SceneChange(){
SceneManager.LoadScene("Main");
}
}
・コードが書けたらチェック。
*「Enemy Shell」プレファブに「EnemyShell」の「Tag」を付けましょう。
・チェックが完了したら、「TankHealth」スクリプトを「Player(Tank)」オブジェクトに付けましょう。
・「Tank HP Label」の空欄に「Tank HP」をドラッグ&ドロップ。
*「Effect Prefab1」と「Effect Prefab2」(爆発のエフェクト)の項目は自分で好きなように設定してみましょう。
3)Tank(Player)にコライダーコンポーネントを設置
・当たり判定をとるためには「コライダー」が必要ですので「親オブジェクト」に設置しましょう。
・Tank(プレーヤー)をすっぽり囲むように「大きさ」と「位置」を調整してください。
*今回は「OnCollisionEnter」で書いているので「Is Trigger」のチェックは不要です。
・設定が完了したら「再生ボタン」をクリック。
・画面にプレーヤーのHPが表示されて、敵の攻撃を受けるたびに数が減少する。
・同時に爆発のエフェクトが出る。そして、HPが0になったら画面からプレーヤーが消える。
・そして3秒後にゲームがリスタートする。
ここまでできたら成功です。
(リスタートした時、画面が暗くなる場合の解消方法)
・「Window」をクリック→「Lighting」をクリック
・「Auto」のチェックを外す→「Build」を押す。







