どうも、チャーさんです。
あなたはunityでターン制ゲームを作りたい
そう思っていませんか?
この記事ではunityでターン制のゲームを
作る方法を書いています。
なのであなたがこの記事を読めば、
unityでターン制を実現できますよ。
ということでunityでターン制ゲームを作りたい
と思っているなら、このまま下にスクロールして
読んでみてください。
目次
unityでターン制ゲームを作るなら
ということで結論からなんですけど、
unityでターン制のゲームを作りたければ、
boolを(真偽値)を使いましょう。
そうすればターン制のゲームを作ることが
できます。
その理由ですが、boolはあなたがご存知の通り、
真偽値(trueかfalse)をとることができます。
なので、例えば、
public bool turn;
などの変数を作っておき、
turn= true;
の時はプレイヤーが行動できるようにし、
turn=false;
の時には敵が行動できるようにするなど
をすればunityでターン制のゲームを
作ることができるのです。
しかしこれだけでは具体的にイメージが
湧きづらいと思うので僕が実際ターン制ゲーム用に
書いたコードも載せますね。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class gridMove : MonoBehaviour {
public bool playerTurn;
// Use this for initialization
void Start () {
playerTurn = true;
}
// Update is called once per frame
void Update () {
if (playerTurn == true) {
if (Input.GetKeyDown (KeyCode.UpArrow)) {
transform.position = transform.position + new Vector3 (0, 0, 1);
playerTurn = false;
}
}
}
}
上記はコードの抜粋ですがこんな感じでして、
boolの変数を作っておき、
プレイヤーが行動できるのは
boolの変数がtrueの時のみ、
そして行動終了後には、真偽値をfalseに
書き換える。
そして敵が行動したらまたboolの変数を
trueに書き換える。ということをする形です。
上記のコードでいうならば、
if (playerTurn == true) {
}
がプレイヤーのターンでして、
if (Input.GetKeyDown (KeyCode.UpArrow)) {
transform.position = transform.position + new Vector3 (0, 0, 1);
playerTurn = false;
}
の部分が上キーを押すと移動したのちに、
boolの真偽値をfalseにして、
敵のターンにする。
という形ですね。
実際敵の行動を作るには、
この際にboolの変数がfalseだったら
というif文を使って行動内容を記述することになりますが、
unityでターン制のゲームを作る
大枠の概念は上記のような形です。
とにかく肝な部分はboolで真偽値を使う
とこでして、これを使うとターン制が可能です。
unityでターン制ゲームを作る手順
でここからは具体的な手順についてお話します。
オブジェクトを用意
まずはプレイヤーと敵それから、
空のオブジェクトを作りましょう。
終わってたらスキップしましょう。
空オブジェクトにスクリプトつけて記述しましょう
次に空のオブジェクトにスクリプトを
つけ、スクリプト内の記述にはboolの変数を宣言しましょう。
例
private bool turn;
ちなみに空オブジェクトにスクリプトをつける理由ですが、
単純にboolの記述がまとめやすいからです。
プレイヤーと敵にそれぞれスクリプトつけて、
相手のスクリプトを取得してboolを切り替える
みたいなのも考えれなくないですが、
スクリプト数が増えますし、
管理が面倒になるので、1つのスクリプト
にまとめることを本記事ではお勧めします。
敵とプレイヤーのオブジェクトを取得
で次に敵とプレイヤーのオブジェクトを
取得しましょう。
理由は、別のオブジェクトから、
敵とプレイヤーのオブジェクトを動かすためです。
取得の方法は以下の記事を参照してください。
ターン性を実装しましょう
そして、次にif文で、
turn==trueの時(プレイヤーターン)
とturn==falseの時を用意し、
あとはその中にプレイヤーと敵に
させたい行動内容を記述していきましょう。
そしてどちらもですが、
行動したらturn= のとこを相手の真偽値に
書き換える記述を書いときましょう。
例
if (Input.GetKeyDown (KeyCode.UpArrow)) {
//行動内容の記述
turn = false; //これで←行動したら相手のターンになる。
}
という感じです。
ちなみに敵の場合はこれの逆の記述を入れます。
例
turn = true;
(trueにするプレイヤーが動けるようになる)
あとはあなたが敵とプレイヤーに
どんな行動をさせるか次第ですが、
上記でターンを切り替えながら行動させれますよ。
まとめ
ということでまとめに入ります。
unityでターン制ゲームを作るには
bool(真偽値)を使いましょう。
そうすれば、
プレイヤーと敵が交代交代
で行動できるターン制ゲームを作れます。
ので、あなたがターン制ゲームを作りたいなら、
本記事の内容を参考にしてやってみてください。
それでは、読んでもらってありがとうございました。
チャーさん