Unityで簡単なシューティングゲームを作る[3]
Step3:移動範囲を制限する
今回はプレイヤーがステージの外に出ないよう、移動範囲を制限する設定を行う。
※このサイトのチュートリアルはとりあえず自力でゲームを作ってみることを目的としているため、プログラム言語に関する解説部分はかなり大雑把で意訳気味です。プログラム言語(C#)について正しく、詳しく学びたい方は、入門書やUnityの解説サイトなどをご参考にしていただけたらと思います。また、このサイトはコピープロテクトをかけているため、画面上からスクリプトのコピペができません。「スクリプトはこちら」というリンクからテキストファイルを表示して使ってください。面倒くさくてすみません。
移動範囲を制御するスクリプトを作成する
まず移動範囲を制限するC#スクリプトを作成する。メニューの「Assets」から「Create」で「C# Script」を作成。ファイル名を「Range」とする。
スクリプトファイルを開き、以下のように記述する。スクリプトはこちらから。
using System.Collections; using System.Collections.Generic; using UnityEngine; public static class Range{ public static Vector2 m_moveLimit = new Vector2( 2f, 4f ); public static Vector3 ClampPosition( Vector3 position ){ return new Vector3 ( Mathf.Clamp( position.x, -m_moveLimit.x, m_moveLimit.x ), Mathf.Clamp( position.y, -m_moveLimit.y, m_moveLimit.y ), 0 ); } }
以下の部分で、移動可能な範囲は左右に2、上下に4と設定している。
public static Vector2 m_moveLimit = new Vector2( 2f, 4f );
スクリプトを呼び出す記述を追加する
スクリプトが書けたら保存する。次に作成したスクリプト「Range」を呼び出す記述を、プレイヤーを動かしているスクリプト「Player Controll」に追記する。Assetsフォルダ内の「Player Controll」をダブルクリックしファイルを開いたらvoid Update () {の下に赤字の一文を追記する。スクリプトはこちらから。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour{
void Update () {
// プレイヤーの移動範囲を制限するRangeを呼び出す
transform.localPosition = Range.ClampPosition( transform.localPosition );
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);
}
}
}
動作確認
ゲームビューに切り替えてプレイボタンを押し、矢印キーを使って動作確認する。同じ方向にキーを押し続けてもステージ外に出ないことが確認できればOK。
次の「Step4:弾を発射する」では、プレイヤーに攻撃用の弾を発射させてみる。
★チュートリアル一覧
2020.6.3投稿