さとうきびの初心者プログラミング日記

Unity,Java,Pythonとかで調べたことをまとめていきます。間違っていることがあったら、コメント等で教えてくれるとありがたいです..!

Unity で ダメージUI を作る(2D)

今回は、UnityにてダメージUIを作ってみました。

f:id:yuhgt:20170225162700g:plain

敵に攻撃した際やプレイヤーが攻撃を受けた際に、
受けたダメージの量を出してくれるものです。
出した後は、重力に従い下に落ちて消えます。

いろいろな実装の仕方があると思いますが、
自分がやってみた方法を一つ紹介したいと思います。


DmageTextプレハブの作成

Create Emptyで空のGame Objectを作成します。
名前をDamageTextとします。

f:id:yuhgt:20170225153557p:plain

Add ComponentText MeshRigidbody 2Dをつけましょう。

f:id:yuhgt:20170225155126p:plain

Mesh RendererTextに適当な数字と,
Fontを好きなものに変えます。

完成したらPrefabsディレクトリに入れておきましょう。

今、ゲームの実行画面では、以下のような感じです。

f:id:yuhgt:20170225154138p:plain


DamageTextを飛ばす&消す

次にこのDamageTextスクリプトを作成します。
Add ComponentNew Scriptをし、Scriptをつけます。
DamageTextSCR.csという名前にしました。

DamageTextSCR.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DamageTextSCR : MonoBehaviour {

    // Use this for initialization
    void Start()
    {
        GetComponent<Rigidbody2D>().AddForce(new Vector3(Random.Range(-80, 80), Random.Range(100, 180), 0));
        StartCoroutine(DestroyObject());
    }

    private IEnumerator DestroyObject()
    {
        yield return new WaitForSeconds(0.6f);
        Destroy(this.gameObject);
    }
}

このスクリプトによって、生成時に上に'ぴょんっ'と跳ねて、
0.6秒後に破棄されます。

DamageTextをプレハブから生成する

もうほとんど完成なので、あとはこのDamageTextを
プレハブから生成してあげるだけです。

本来なら、PlayerEnemyDamage関数に書けばいいのですが、
今回は試しにButtonが押されたら生成という風にしておきます。

CanvasButtonを設置し、
DamageButton.csを作成します。

DamageTextScr.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DamageButton : MonoBehaviour {

    public GameObject DamageText;

    public void OnClick()
    {
        //                      発生位置(本来なら敵のtransform.position)                            発生させたいテキスト
        Instantiate(DamageText, new Vector3(0,0,0), transform.rotation).GetComponent<TextMesh>().text = "1";
    }
}

スクリプトが完成したら、
Buttonの設定をして、DamageButtonスクリプトに
DamageTextprefabをドラッグ・アンド・ドロップで設定してあげれば完成です!

完成!

f:id:yuhgt:20170225163009g:plain

お疲れ様です。
読んでくれてありがとうございました。

もっと良い実装がありましたら、ぜひ教えてください;;!