Deca-pod.jp

Anything

ゲーム制作その2:エフェクトの表示

前回はキャラクタの表示と簡単なアクションの実行の実装方法を確認しました。
今回はエフェクトの表示方法を試してみます。
具体的には、キャラクタがダメージを受けた時に表示される数字(エフェクト)をコントロールしてみましょう。

流れは以下
テキストオブジェクトを作成
テキストオブジェクトの動きを制御するスクリプトを作成
任意のタイミングで任意の位置にテキストオブジェクトを作成/表示

その他
テキストのぼやけを解消する
http://www.clrmemory.com/unity/text-mesh-blur/

早速取り掛かります。

1.テキストオブジェクトの作成
空のGameObjectを作成します。
TextMeshコンポーネントとRigidbody2Dコンポーネントをアタッチします。

2.テキストオブジェクトの動きを制御するスクリプトを作成
参考:http://satoukibi.hatenablog.com/entry/2017/02/25/Unity_%E3%81%A7%E3%83%80%E3%83%A1%E3%83%BC%E3%82%B8UI%E3%82%92%E4%BD%9C%E3%82%8B%282D%29

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

public class DamageTextSCR : MonoBehaviour {

// Use this for initialization
void Start()
{
GetComponent().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);
}
}

3.任意のタイミングで任意の位置にテキストオブジェクトを作成/表示
スクリプト内で1.で作成したオブジェクトを取得してInstantiateします。

//ダメージオブジェクト表示

public GameObject damageText;
Instantiate(damageText, this.transform.position, Quaternion.identity).GetComponent().text = amount.ToString();

youtu.be

ダメージエフェクトがポップされました。