【unity】BattleSystemをUIと接続して、正解→ダメージ、不正解→ダメージまで完成



BattleSystemをUIと接続して、正解→ダメージ、不正解→ダメージまで完成させます。
(Unity)

ここが英語RPGの戦闘コアです。

全体の仕組み

まず流れを整理します。

問題表示

AnswerInput に入力

SubmitButton 押す

QuizManager が正解か判定

BattleSystem がダメージ処理

HPバー減る

次の問題

この役割分担が重要。

① BattleSystem.cs を作る

Project → 右クリック → Create → C# Script
名前:

BattleSystem
中身
using UnityEngine;

public class BattleSystem : MonoBehaviour
{
public Player player;
public Enemy enemy;
public QuizManager quizManager;

public void ProcessAnswer(string answer)
{
if (quizManager.IsCorrect(answer))
{
enemy.TakeDamage(20);
Debug.Log("Enemy Damage!");
}
else
{
player.TakeDamage(10);
Debug.Log("Player Damage!");
}
}
}

② QuizManager を少し変更

SubmitAnswer を BattleSystem と連携させる

using UnityEngine;
using TMPro;
using System.Collections.Generic;

public class QuizManager : MonoBehaviour
{
public TextMeshProUGUI questionText;
public TMP_InputField answerInput;
public TextMeshProUGUI resultText;
public TextMeshProUGUI scoreText;

public BattleSystem battleSystem;

private Dictionary words = new Dictionary();
private string currentQuestion;
private int score = 0;

void Start()
{
words.Add("apple", "りんご");
words.Add("dog", "犬");
words.Add("cat", "猫");
words.Add("water", "水");

NextQuestion();
}

public void SubmitAnswer()
{
string answer = answerInput.text;

if (IsCorrect(answer))
{
resultText.text = "Correct!";
score++;
}
else
{
resultText.text = "Wrong...";
}

scoreText.text = "Score : " + score;

// ★ここでバトル処理
battleSystem.ProcessAnswer(answer);

answerInput.text = "";
NextQuestion();
}

public bool IsCorrect(string answer)
{
return answer == words[currentQuestion];
}

void NextQuestion()
{
List keys = new List(words.Keys);
currentQuestion = keys[Random.Range(0, keys.Count)];
questionText.text = currentQuestion + " の意味は?";
}
}

③ Hierarchy に BattleSystem を作る

Hierarchy
→ 右クリック
→ Create Empty
→ 名前 BattleSystem

Add Component → BattleSystem.cs

④ Inspectorで接続(超重要)

BattleSystemオブジェクトを選択して

Player → Player オブジェクトをドラッグ
Enemy → Enemy オブジェクトをドラッグ
QuizManager → QuizManager オブジェクトをドラッグ

⑤ QuizManager 側にも接続

QuizManager オブジェクトを選択

BattleSystem → BattleSystem オブジェクトをドラッグ

⑥ 最終 Hierarchy

こうなっていればOK

Canvas
├─ QuestionText
├─ AnswerInput
├─ SubmitButton
├─ ResultText
├─ ScoreText
├─ PlayerHPBar
└─ EnemyHPBar

Player
Enemy
QuizManager
BattleSystem

⑦ 動作テスト

Playボタン押す

問題表示

答え入力

OKボタン

Correct → 敵HP減る
Wrong → 自分HP減る