3Dでの前後左右、上下の動きに制限をつけてみましょう。
今回の例では、XYZそれぞれ3の範囲内で動けるように、スクリプトを作ります。
関連記事:
2Dゲームで画面端から外へ移動させない
AND条件を使って指定範囲内の移動
Cubeオブジェクトを用意して、カラーを付けました。
カメラを少し近づけて、ゲームビューではこのように映っています。
CubeMove.csを作成して、Cubeに追加します。
CubeMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { private float speed; void Start() { speed = 10.0f; } void Update() { //上方向(Y)5以上進めない if (Input.GetKey (KeyCode.UpArrow) & transform.position.y < 3.0f ) { transform.position += transform.up * speed * Time.deltaTime; } //下方向(Y)-5以上進めない if (Input.GetKey (KeyCode.DownArrow) & transform.position.y > -3.0f ) { transform.position -= transform.up * speed * Time.deltaTime; } //右方向(X)5以上進めない if (Input.GetKey(KeyCode.RightArrow) & transform.position.x < 3.0f) { transform.position += transform.right * speed * Time.deltaTime; } //左方向(X)-5以上進めない if (Input.GetKey (KeyCode.LeftArrow) & transform.position.x > -3.0f) { transform.position -= transform.right * speed * Time.deltaTime; } //前方向(Z)5以上進めない if (Input.GetKey (KeyCode.W) & transform.position.z < 3.0f) { transform.position += transform.forward * speed * Time.deltaTime; } //前方向(Z)-5以上進めない if (Input.GetKey (KeyCode.S) & transform.position.z > -3.0f) { transform.position -= transform.forward * speed * Time.deltaTime; } } } |
ゲームプレイして動きを確認します。
【上下左右の動き】は十字キー、【前後の動き】はWキーとSキーで操作します。
AND条件を使って、それぞれのキー入力に、座標の制限を入れています。
上限左右、前後それぞれ3のエリア内しか移動できなように制御されました。
関連記事:
2Dゲームで画面端から外へ移動させない