Unityでゲームを開発している際に、ランダムな問題を出題し、ユーザーが選択肢を選んだ後にNG判定を行う機能を実装したいという質問がありました。この機能を実装するためには、複数のコードを組み合わせる必要があります。ここでは、ランダムな問題の生成から、ユーザーが選択肢をタッチした際のNG判定までを実現する方法を解説します。
1. ランダムな問題の生成
まず、ゲームの最初に出題される問題をランダムに生成する部分から始めます。UnityのRandom.Rangeメソッドを使用して、問題の数字を3~55の範囲でランダムに生成します。この部分のコードは以下のようになります。
void Start() {
Application.targetFrameRate = 60;
int index = Random.Range(3, 55);
intQuest = index;
this.fukidashiString = "もっとちょうだい!";
this.questText.GetComponent().text = this.intQuest.ToString();
}
このコードでは、intQuestという変数にランダムに選ばれた値を代入し、表示するテキストを更新しています。
2. ユーザーが選択肢を選んだ際の判定処理
次に、ユーザーが選択肢を選んだ時の判定処理を追加します。ユーザーが選択した点数を保持するために、intPointという変数を使い、選んだ数字を加算していきます。
ここで重要なのは、NG判定を行う部分です。問題に設定された数字を超えてしまった場合にNG判定を行い、再選択画面に戻す処理を記述します。
void Update() {
if (intQuest < intPoint) {
TestPause();
this.fukidashiString = "もったいないよ!\r\nもう食べれないよ!";
}
if (intQuest == intPoint) {
TestPause();
this.fukidashiString = "ありがとう!\r\nもうまんぞくだよ!";
}
this.pointText.GetComponent().text = this.intPoint.ToString();
this.fukidashiText.GetComponent().text = this.fukidashiString.ToString();
}
このコードでは、intQuestがintPointを超えた場合に「もったいないよ!」というメッセージを表示し、選択肢が正解の場合に「ありがとう!」というメッセージを表示しています。
3. ユーザーが選択した数字の処理
ユーザーが選択した数字を処理するために、BallScriptを使って、選択した数字を加算し、ゲーム内の処理を行います。
public class BallScript : MonoBehaviour {
public int number;
public GameDirector director;
private float rotationF;
private float speedF;
public void PointButton() {
Destroy(gameObject);
director.Point(number);
}
このクラスでは、選択した数字をGameDirectorに渡し、ポイントを加算する処理を行っています。
4. NG判定と再選択画面
最後に、選択肢が間違っていた場合にNG判定を行い、再選択画面に戻すための処理を追加します。これにより、ユーザーは間違った選択をした場合に適切なフィードバックを得ることができます。
NG判定のロジックは、選んだ数字が設定された問題の目標を超えた場合に発動します。これにより、ゲームの進行を制御することができます。
まとめ
今回は、Unityでランダムに出題される問題を作成し、ユーザーの選択に基づいてNG判定を行い、再選択画面に戻す方法を解説しました。このようなロジックを組み合わせることで、よりインタラクティブでフィードバックがあるゲームが作成できます。コード例を参考にして、ぜひ自分のゲーム開発に役立ててください。


コメント