2Dゲームなどでは、画面の端からはみ出してしまうと、ゲームが成り立たないことがあったりします。
画面外に出ていかないように、プレーヤーを制御してみましょう。
プレーヤーが端にぶつかると、それ以上進むことができない仕組みです。
関連記事:
敵に当たるとスコアを加点-2Dシューティング
クリックでミサイルを発射-2Dシューティング
指定した座標範囲から先へ進めなくする(3D)
2Dの画面設定
2Dゲームを作成します。
アスペクト比は3:2に設定しました。
カメラマークがあると見づらいので、これを非表示にしました。
ギズモ > カメラマークをクリック。
カメラマークが消えました。
続いて、プレーヤーのオブジェクトを用意します。
今回は、ギャラクシア2Dスペースシュータースプライトパック#1のフリーアセットをインポートさせていただきました。
Playerフォルダの中から、使用したい素材を選び、ヒエラルキーにドラッグ&ドロップします。
プレーヤーを3倍に拡大します。
以上で、画面設定とオブジェクトの準備はできました。
画面の端に行くと進めなくする
PlayerMove.csを作成して、プレーヤーのオブジェクトに追加しましょう。
PlayerMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerMove : MonoBehaviour { [SerializeField] float speed; void Update() { float moveX = Input.GetAxis("Horizontal") * Time.deltaTime * speed; float moveY = Input.GetAxis("Vertical") * Time.deltaTime * speed; transform.position = new Vector2( //エリア指定して移動する Mathf.Clamp( transform.position.x + moveX, -7.0f, 7.0f ), Mathf.Clamp( transform.position.y + moveY, -4.5f, 4.5f ) ); } } |
速度フィールドには、自由に数値を入力してください。
ゲームプレイしてみましょう。
画面の端に行けば、これ以上すすむことができません。
このように、Mathf.Clampを使えば、移動可能なエリアを指定することができます。
範囲指定は、カンマ区切りで2つの値(x, y)を入力しましょう。
関連記事:
敵に当たるとスコアを加点-2Dシューティング
クリックでミサイルを発射-2Dシューティング
指定した座標範囲から先へ進めなくする(3D)