読者です 読者をやめる 読者になる 読者になる

ロードバイク時々ものづくり

ロードバイクおよびゲーム開発について

ダメージをuGUIのCanvas上に表示する

Unity uGUI

ダメージをuGUIのCanvas上に表示の仕方

f:id:vrcycling:20151130225212j:plain

Canvas」に子オブジェクトとしてTextを追加します。

f:id:vrcycling:20151130225328j:plain

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にダメージテキストが子として生成され、

テキスト内にはダメージの値が与えられ表示されます。