
ダメージポップの仕組み
仕組みはすごくシンプル
ダメージ
↓
数字オブジェクト生成
↓
上に動く
↓
少しずつ消える
↓
削除
① 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
⑤ 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バー減る