絵本レビューとWwbと…

unityで簡単なゲームの作る方法

Unityで簡単なシューティングゲームを作る[2]

Step2:プレイヤーを動かす

プロジェクトの設定が終わったところで、いよいよゲーム作りが始まる。今回からプログラミングもスタートする。

※このサイトのチュートリアルはとりあえず自力でゲームを作ってみることを目的としているため、プログラム言語に関する解説部分はかなり大雑把で意訳気味です。プログラム言語(C#)について正しく、詳しく学びたい方は、入門書やUnityの解説サイトなどをご参考にしていただけたらと思います。また、このサイトはコピープロテクトをかけているため、画面上からスクリプトのコピペができません。「スクリプトはこちら」というリンクからテキストファイルを表示して使ってください。面倒くさくてすみません。

プレイヤーを動かすスクリプトを作成する

矢印キーの入力でプレイヤーを動かすためには、プレイヤーのオブジェクトにプログラムを設定する必要がある。Unityで使われているのはC#(シーシャープ)と呼ばれるもの。C#を使ってプレイヤーを動かすためのスクリプトを書いていく。「Assets」メニューから「Create」を選択し「C# Script」を選択。

Unity C#スクリプトを作成

「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」をクリック。

オブジェクトにスクリプトをアセット1

プルダウンメニューが開くので下の方にある「Script」をクリックする。すると先ほど作ったC#スクリプト「PlayerController」が表示されるのでそれをクリックするとアタッチされる。

オブジェクトにスクリプトをアセット2

スクプトがアタッチされると、playerのインスペクタにアタッチしたスクリプト「PlayerController」が表示されるようになる。これでplayerが動くようになる。

オブジェクトにスクリプトをアセット3

動作確認をする

ゲーム ビューに切り替えてプレイボタンを押し、動作確認をする。

Unityゲーム ビューで動作確認

矢印キーに合わせてこんな感じにプレイヤーが動くのを確認できたら成功。

ただ、同じ矢印キーをずっと押しているとプレイヤーがステージから消えてしまうのに気が付くと思う。これはプレイヤーの移動範囲が設定されていないためである。この問題は次回の「Step3:移動範囲を制限する」で対応する。

★チュートリアル一覧

  1. Step1:プロジェクトの設定
  2. Step2:プレイヤーを動かす
  3. Step3:移動範囲を制限する
  4. Step4:弾を発射する
  5. Step5:敵を動かす
  6. Step6:弾で敵を倒す
  7. Step7:スコアを更新する
  8. Step8:ゲームオーバーの設定
  9. Step9:リトライボタンの設定
  10. Step10:背景を動かす
  11. Step11:BGMを設定
  12. Step12:爆破エフェクトをつける
  13. Step13:ゲームをビルドする

2020.6.3投稿

最近の投稿

レビュー記事

Work-life

Hobby

Diary