
- ① BattleSystem.cs を作る
- ② QuizManager を少し変更
- ③ Hierarchy に BattleSystem を作る
- ④ Inspectorで接続(超重要)
- ⑤ QuizManager 側にも接続
- ⑥ 最終 Hierarchy
- ⑦ 動作テスト
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
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
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減る