Unityで簡単なシューティングゲームを作る[2]
Step2:プレイヤーを動かす
プロジェクトの設定が終わったところで、いよいよゲーム作りが始まる。今回からプログラミングもスタートする。
※このサイトのチュートリアルはとりあえず自力でゲームを作ってみることを目的としているため、プログラム言語に関する解説部分はかなり大雑把で意訳気味です。プログラム言語(C#)について正しく、詳しく学びたい方は、入門書やUnityの解説サイトなどをご参考にしていただけたらと思います。また、このサイトはコピープロテクトをかけているため、画面上からスクリプトのコピペができません。「スクリプトはこちら」というリンクからテキストファイルを表示して使ってください。面倒くさくてすみません。
プレイヤーを動かすスクリプトを作成する
矢印キーの入力でプレイヤーを動かすためには、プレイヤーのオブジェクトにプログラムを設定する必要がある。Unityで使われているのはC#(シーシャープ)と呼ばれるもの。C#を使ってプレイヤーを動かすためのスクリプトを書いていく。「Assets」メニューから「Create」を選択し「C# Script」を選択。
「Assets」フォルダ内にC#スクリプトが作成されるのでファイル名を「PlayerController」とつける。
ダブルクリックするとエディタが開き、C#スクリプトファイルを編集できるようになるので、以下のように記述する。スクプトはこちらから。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour{ void Update () { if (Input.GetKey (KeyCode.LeftArrow)) { transform.Translate (-0.1f, 0, 0); } if (Input.GetKey (KeyCode.RightArrow)) { transform.Translate ( 0.1f, 0, 0); } if (Input.GetKey (KeyCode.UpArrow)) { transform.Translate ( 0,0.1f, 0); } if (Input.GetKey (KeyCode.DownArrow)) { transform.Translate ( 0,-0.1f, 0); } } }
ここでごくごく簡単にC#の構造の説明。最初の部分はUnityの色々な機能を呼び出すおまじないよのようなもの。
using System.Collections; using System.Collections.Generic; using UnityEngine;
次に続くのがC#の呼び出し部分。ここでは「PlayerController」というファイルを呼び出している。
public class PlayerController : MonoBehaviour
「public class」の後に続くファイル名がアセットフォルダ内にあるC#のファイル名と一致していることを確認する。(ここではPlayerControllerというファイル名。)
void Update ()以下では、矢印キーを押した時の処理を記述している。Input.GetKey関数を使って指定したキーが押されているかを調べ、キーが押されていた場合にはTranslate関数を使ってプレイヤーの位置を移動するよう命令している。
void Update () { // 左矢印キーが押されたら位置を0.1左に移動 if (Input.GetKey (KeyCode.LeftArrow)) { transform.Translate (-0.1f, 0, 0); } // 右矢印キーが押されたら位置を0.1右に移動 if (Input.GetKey (KeyCode.RightArrow)) { transform.Translate ( 0.1f, 0, 0); } // 上矢印キーが押されたら位置を0.1上に移動 if (Input.GetKey (KeyCode.UpArrow)) { transform.Translate ( 0,0.1f, 0); } // 下矢印キーが押されたら位置を0.1下に移動 if (Input.GetKey (KeyCode.DownArrow)) { transform.Translate ( 0,-0.1f, 0); } }
例えば最初の
if (Input.GetKey (KeyCode.LeftArrow))
を日本語で言うと「もし、左矢印キーがおされたのなら{ }内に記述された処理を行う」と言う感じになる。
そして{ }に記述された処理
transform.Translate (-0.1f, 0, 0);
を日本語で言うと「現在の位置から0.1左に移動する」という感じだ。こうした処理を上下左右全てのキーに対して行なっている。
スクリプトをアタッチする
スクリプトを記述したら保存し、プレイヤーに設定する。これを「アタッチ」という。シーンビューの状態でヒエラルキーのリストから「player」を選択。インスペクタの「Add Component」をクリック。
プルダウンメニューが開くので下の方にある「Script」をクリックする。すると先ほど作ったC#スクリプト「PlayerController」が表示されるのでそれをクリックするとアタッチされる。
スクプトがアタッチされると、playerのインスペクタにアタッチしたスクリプト「PlayerController」が表示されるようになる。これでplayerが動くようになる。
動作確認をする
ゲーム ビューに切り替えてプレイボタンを押し、動作確認をする。
矢印キーに合わせてこんな感じにプレイヤーが動くのを確認できたら成功。
ただ、同じ矢印キーをずっと押しているとプレイヤーがステージから消えてしまうのに気が付くと思う。これはプレイヤーの移動範囲が設定されていないためである。この問題は次回の「Step3:移動範囲を制限する」で対応する。
★チュートリアル一覧
2020.6.3投稿