ダメージをuGUIのCanvas上に表示する
ダメージをuGUIのCanvas上に表示の仕方
「Canvas」に子オブジェクトとしてTextを追加します。
Canvasの中央に配置し、サイズなどは任意で設定します。
テキストのアウトライン化などについては下記参照。
テキストには自動で消滅するコードや、移動・透明化のコードを記述します。
Text text;
void Start () {
//1秒で消滅
Destroy(gameObject, 1);
text = gameObject.GetComponent<Text>();
}
float time = 0;
void Update () {
transform.Translate(Vector3.up * Time.deltaTime * 200);
time += Time.deltaTime;
//透明にする
text.color = new Color(text.color.r, text.color.g, text.color.b, 1.5F - time);
}
このテキストをプレハブ化します。
弾と敵が衝突時にこのプレハブをCanvasの子として呼び出します。
Text damageText;
public Text damageTextObj;
GameObject canvas;
(中略 TextObjには追加したプレハブを指定、canvasはFindなどで取得)
private void OnCollisionEnter(Collision collider) {
if(collider.gameObject.tag == "Enemy") {
//ダメージを画面に表示する
damageText = Instantiate(damageTextObj, Vector3.zero, Quaternion.identity) as Text;
damageText.transform.SetParent(canvas.transform, false);
damageText.text = "" + damage;
}
}
これで敵の弾が衝突したときにCanvasにダメージテキストが子として生成され、
テキスト内にはダメージの値が与えられ表示されます。