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

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

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

5. 実行確認
ゲームを再生し、「PlayerAttack」ボタンをクリック!
敵(スライム)のHPが 50 → 42 に減っていれば、攻撃処理は成功です!


まとめ
今回は、プレイヤーの攻撃処理を実装しました!
敵にダメージを与えられるようになり、
一気に「戦闘っぽさ」が出てきましたね!
次回は、敵からの攻撃処理を実装していきます。
戦闘のターン制実装に向けて、どんどんゲームが進化していきます!お楽しみに!
コメント