ダメージ数字ポップ(RPGで敵の上に「25」とか出るやつ)をUnityで作る方法



ダメージポップの仕組み

仕組みはすごくシンプル

ダメージ

数字オブジェクト生成

上に動く

少しずつ消える

削除

① DamageText を作る

Hierarchy
右クリック
→ UI
→ Text - TextMeshPro
→ 名前 DamageText

設定:

Font Size : 36
Color : Red
Alignment : Center

位置は適当でOK(Prefabにする)

② Prefab にする

Hierarchy の DamageText を

Project ウィンドウにドラッグ

→ 青いアイコンになる
→ これが Prefab

その後 Hierarchy の DamageText は削除してOK

③ DamagePopup スクリプト
using UnityEngine;
using TMPro;

public class DamagePopup : MonoBehaviour
{
public TextMeshProUGUI damageText;
public float moveSpeed = 1f;
public float lifeTime = 1f;

void Update()
{
transform.Translate(Vector3.up * moveSpeed * Time.deltaTime);

lifeTime -= Time.deltaTime;
if (lifeTime <= 0)
{
Destroy(gameObject);
}
}

public void SetDamage(int damage)
{
damageText.text = damage.ToString();
}
}

これを DamageText Prefab に追加

④ BattleSystem に追加

BattleSystem.cs にこれ追加

public GameObject damagePopupPrefab;
public Transform popupPosition;

ダメージ与えるところに追加

GameObject popup = Instantiate(damagePopupPrefab, popupPosition.position, Quaternion.identity);
popup.GetComponent().SetDamage(damage);

⑤ Inspector 接続

BattleSystem の Inspector で

Damage Popup Prefab → DamageText prefab
Popup Position → Enemy

Enemyの位置に数字が出ます。

⑥ もっとRPGっぽくする設定

DamageText の設定おすすめ

Font Size : 40
Color : Yellow
Outline : Black

TextMeshPro →
Outline Width = 0.2

これでRPG風ダメージ文字になります。

⑦ 完成するとこうなる

問題正解

Enemy.TakeDamage(20)

20 の数字ポップ

上にフワッと移動

消える

HPバー減る