【unity】クリティカルヒット(たまに赤い大ダメージ)を入れる方法【英語クイズ】


やることはシンプルで、

ランダムで
20% → クリティカル
80% → 普通ダメージ

にします。

クリティカルの仕組み

通常ダメージ = 10
クリティカル = 20(2倍)
色 = 赤
文字 = CRITICAL

① BattleSystem.cs を変更

PlayerAttack をこうします

public void PlayerAttack(int damage)
{
bool isCritical = Random.value < 0.2f; // 20%でクリティカル

if (isCritical)
{
damage *= 2;
}

enemy.TakeDamage(damage);

enemyHitEffect.Hit();

Instantiate(attackEffectPrefab, effectPosition.position, Quaternion.identity);

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

② DamagePopup.cs を変更

using UnityEngine;
using TMPro;

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

public void SetDamage(int damage, bool isCritical)
{
damageText.text = damage.ToString();

if (isCritical)
{
damageText.color = Color.red;
damageText.fontSize = 48;
damageText.text = "CRITICAL\n" + damage;
}
else
{
damageText.color = Color.white;
damageText.fontSize = 36;
}

Destroy(gameObject, lifeTime);
}

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

表示イメージ

通常
12

クリティカル
CRITICAL
24 ← 赤文字 大きい

かなりゲームっぽくなります。

クリティカル確率を変える

ここを変えるだけ

Random.value < 0.2f
数字 確率
0.1 10%
0.2 20%
0.3 30%
0.5 50%

おすすめ

0.15f

15%くらいがRPGっぽい