↑このようにUnityにてオブジェクト(プレイヤー)の動きに制限をかける。プレイヤーの動きに制限をかけたいときに活用できるだろう。
目次
【Unity2D】オブジェクト(プレイヤー)の動きに制限をかける
現在の状況
- オブジェクトが設置してある
- オブジェクトをX軸方向に動かすスクリプトがアタッチされている(PlayerController)
- オブジェクトの動きを制限するための記述をする新たなスクリプトがアタッチされている(PlayerLimit)
上記のような状況にしておく。2番目の「オブジェクトをX軸方向に動かすスクリプトがアタッチされている」というのは、本当にX軸方向に動くスクリプトの記述ならなんでも良い。
自分は【Unity2D】スワイプでオブジェクトを上下左右自由自在に動かす方法の記述を行った。
オブジェクトの動きを制限する(数値を自由に決めれるバージョン)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerLimit : MonoBehaviour
{
private float minX = -2;
private float maxX = 2;
void Start()
{
//LimitMinMaxX();
}
void Update()
{
if (transform.position.x < minX)
{
Vector3 temp = transform.position;
temp.x = minX;
transform.position = temp;
}
if (transform.position.x > maxX)
{
Vector3 temp = transform.position;
temp.x = maxX;
transform.position = temp;
}
}
}
【minX】と【maxX】の値を変更することで、自分で好きなように制限をかけられる
実際の動作
こんな感じに動作する。
改良中
オブジェクトの動きを制限する(スクリーンの大きさver)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerLimit : MonoBehaviour
{
private float minX;
private float maxX;
void Start()
{
LimitMinMaxX();
}
void Update()
{
if (transform.position.x < minX)
{
Vector3 temp = transform.position;
temp.x = minX;
transform.position = temp;
}
if (transform.position.x > maxX)
{
Vector3 temp = transform.position;
temp.x = maxX;
transform.position = temp;
}
}
void LimitMinMaxX()
{
Vector3 limit = Camera.main.ScreenToWorldPoint
(new Vector3(Screen.width,Screen.height,0));
maxX = limit.x;
minX = -limit.x;
}
}
スクリーンの大きさを取得し、そのスクリーンを出ないように制限をかけている。
少しスクリーンをはみ出してしまう場合は、【maxX】の値を小さくしたり、【minX】の値を大きくすれば良い。
実際の動作
こんな感じに動作する。
おわりに
以上、オブジェクト(プレイヤー)のX軸方向の動きに制限をかける方法だ。少し改良すれば、Y軸方向の動きに制限をかけることもできる。
今回オブジェクトを動かすスクリプトに【Unity2D】スワイプでオブジェクトを上下左右自由自在に動かす方法が使われている。よければ参考にしてほしい。
【Unity2D】スワイプでオブジェクトを上下左右自由自在に動かす方法
スワイプでオブジェクトを動かしたい 左右とか上下なら動かせるのだが 右上とかには動かせないな このような悩みを解決します。 この記事にはスワイプでオブジェクトを...
コメント