チャムコード

チャーさんのUnityゲームラボです。Unityでゲーム制作する時に使うコードやノウハウをメインに発信しています。Unityでゲーム制作したいと思っているなら読んでください。

ゲーム開発ノウハウ

unityでターン制のゲームを作るにはコレを使いましょう

投稿日:2020年4月14日 更新日:

うも、チャーさんです。

あなたは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つのスクリプト

にまとめることを本記事ではお勧めします。

 

 

敵とプレイヤーのオブジェクトを取得

 

で次に敵とプレイヤーのオブジェクトを

取得しましょう。

 

理由は、別のオブジェクトから、

敵とプレイヤーのオブジェクトを動かすためです。

 

取得の方法は以下の記事を参照してください。

 

unityで他のオブジェクトを取得する方法

 

ターン性を実装しましょう

 

そして、次にif文で、

turn==trueの時(プレイヤーターン)

とturn==falseの時を用意し、

 

あとはその中にプレイヤーと敵に

させたい行動内容を記述していきましょう。

 

 

そしてどちらもですが、

行動したらturn= のとこを相手の真偽値に

書き換える記述を書いときましょう。

 

 if (Input.GetKeyDown (KeyCode.UpArrow)) {
                //行動内容の記述
                turn = false; //これで←行動したら相手のターンになる。
            }

 

という感じです。

 

 

ちなみに敵の場合はこれの逆の記述を入れます。

turn = true;

(trueにするプレイヤーが動けるようになる)

 

あとはあなたが敵とプレイヤーに

どんな行動をさせるか次第ですが、

上記でターンを切り替えながら行動させれますよ。

 

 

まとめ

 

ということでまとめに入ります。

 

unityでターン制ゲームを作るには

bool(真偽値)を使いましょう。

 

そうすれば、

プレイヤーと敵が交代交代

で行動できるターン制ゲームを作れます。

 

 

ので、あなたがターン制ゲームを作りたいなら、

本記事の内容を参考にしてやってみてください。

 

それでは、読んでもらってありがとうございました。

 

チャーさん

 

 

 

-ゲーム開発ノウハウ

関連記事

Unityで動く床(滑らない、往復)の作り方はコチラ

どうも、チャーさんです。 あなたはUnityで動く床、それも滑り落ちず 往復するやつを作りたいと思っていますか?   この記事を読めばそれは実現します。 ですが読まないと結構つまづきます。 …

UnityでHPを回復させる機能を作る方法(簡単なやり方です)

どうも、チャーさんです。 この記事では、UnityでHPを回復させる方法を お話しします。   ゲームでは基本プレイヤーが回復することが多い のでプレイヤーのHPの回復方法を書きます。 &n …

no image

unityでキー入力で攻撃する方法(3分以内にできます)

どうも、チャーさんです。 あなたはunityでキー入力による攻撃を したいですか?   この記事ではunityでキー入力で攻撃を する方法を書いてますので、あなたがこれを読めば、 キー入力で …

Unityでのゲームオーバー機能の作り方をわかりやすく説明

  どうも、チャーさんです。 この記事では、Unityでゲームオーバー画面の 作り方を説明します。   この記事を読めば、あなたはゲームオーバー画面を作れて さらにゲームオーバーの …

no image

Unityでゲームスタート画面とゲーム画面に遷移する方法

どうも、チャーさんです。   この記事では、Unityでゲームスタート画面の作り方を 説明してます。なので、この記事を読めば、 あなたはゲームスタート画面を作れて、   かつスター …

Unityでジャンプする方法(空中ジャンプ防止機能付き)

どうも、チャーさんです。   あなたはUnityでジャンプ機能を作りたい と思っていますか?この記事では、パソコンの キーボードを押したら、ジャンプする機能の作り方を説明します。 &nbsp …

Unityでオブジェクトを上下移動(往復)させる機能の作り方

どうも、チャーさんです。 あなたはUnityでオブジェクトを自動で上下移動させたい と思っていますか?   オブジェクトを上下に自動で往復させたり、 動く床として上下に自動で往復させたり、 …

最新記事

チャーさん

Unityに関する記事を書いてます。

 

[簡単な経歴]

 

2018年-プログラムを始めUnityの存在を知りハマる。

2019年-エンジニアとして仕事開始(web系)

2021年-UnityでVR開発等にも手を出し始める。

現在-エンジニアとして活動しながらUnityも続行中。

 

youtubeでは、Unityに関する動画をあげてるので、

あなたのUnityスキルアップにどうぞ。