ふりかえり
前回は、プレイヤーの攻撃機能を追加しました!
敵の攻撃機能を追加
プレイヤーの攻撃機能が実装できたので、次はモンスターの攻撃機能を実装していきます。
1. EnemyManagerに攻撃処理を追加
まずは、敵がプレイヤーを攻撃できるように、EnemyManager に EnemyAttack() 関数を追加します。
public void EnemyAttack(PlayerManager playerManager) { int damage = Mathf.Max(0, enemy.attack - playerManager.player.defense); playerManager.PlayerTakeDamage(damage); Debug.Log($"{enemy.name}が{playerManager.player.name}に{damage}ダメージ!"); }
2. PlayerManagerにダメージ処理を追加
次に、プレイヤーがダメージを受けたときの処理を PlayerManager に追加します。
public void PlayerTakeDamage(int damage) { player.currentHP -= damage; if (player.currentHP <= 0) { player.currentHP = 0; Debug.Log($"{player.name}を倒した!"); } }
3. UIから攻撃できるようにEnemyUIManagerを修正
UIのボタンから攻撃を実行できるよう、EnemyUIManager に OnAttackButtonClicked() を追加します。
using UnityEngine; using TMPro; public class EnemyUIManager : MonoBehaviour { public EnemyManager enemyManager; public PlayerManager playerManager; public TextMeshProUGUI nameText; public TextMeshProUGUI hpText; public TextMeshProUGUI levelText; void Update() { UpdateUI(); } void UpdateUI() { nameText.text = enemyManager.enemy.name; hpText.text = "HP: " + enemyManager.enemy.currentHP + "/" + enemyManager.enemy.maxHP; levelText.text = "Lv: " + enemyManager.enemy.level; } public void OnAttackButtonClicked() { if (enemyManager != null && playerManager != null) { enemyManager.EnemyAttack(playerManager); } else { Debug.LogError("EnemyManager or PlayerManager is not assigned."); } } }
4. Unityでのボタン設定
次に、実際に攻撃を実行するための ボタンUI を作成し、設定していきます。
- Hierarchyビューで「+」→「UI」→「Button – TextMeshPro」を選択
- ボタンのTextを「EnemyAttack」に変更
- 配置を調整して、プレイヤーのステータスの下に設置

続いて、ボタンの OnClickイベントの設定 を行います:
- Button コンポーネントの On Click () に EnemyUIManager をアタッチ
- ドロップダウンから EnemyUIManager → OnAttackButtonClicked() を選択

最後に、EnemyUIManager の Inspector を確認し、PlayerManager の項目にPlayerManager をアタッチしたゲームオブジェクトをドラッグ&ドロップします。

5. 実行確認
ゲームを再生し、「EnemyAttack」ボタンをクリック!
プレイヤーのHPが 100 → 97 に減っていれば、攻撃処理は成功です!



勇者(プレイヤー)のHPが0になったらコンソールの勇者を倒した!というログが出てきます!


まとめ
今回は、敵の攻撃処理を実装しました!
これでプレイヤーと敵にそれぞれダメージを与えられるようになり、
戦闘の基礎の基礎はできました!
次回は、ターンを実装していきます。お楽しみに!
コメント