▼そのUnityの作業、依頼しませんか?
ゲーム開発に使える素材・知識

【Unity2D】オブジェクト(プレイヤー)のX軸方向の動きに制限をかける

Unityでオブジェクトの動きに制限をかける
Unityでオブジェクトの動きに制限をかける
オブジェクトのX軸方向の動きに制限がかかっている

↑このようにUnityにてオブジェクト(プレイヤー)の動きに制限をかける。プレイヤーの動きに制限をかけたいときに活用できるだろう。

【Unity2D】オブジェクト(プレイヤー)の動きに制限をかける

現在の状況

  1. オブジェクトが設置してある
  2. オブジェクトをX軸方向に動かすスクリプトがアタッチされている(PlayerController)
  3. オブジェクトの動きを制限するための記述をする新たなスクリプトがアタッチされている(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】スワイプでオブジェクトを上下左右自由自在に動かす方法が使われている。よければ参考にしてほしい。

スワイプでUnityのオブジェクトを動かす
【Unity2D】スワイプでオブジェクトを上下左右自由自在に動かす方法【Unity】スワイプでオブジェクトを動かしたいけど、左右とか上下なら動かせるけどね、右上とかには動かせないな、そのような悩みを解決します。スワイプでオブジェクトを上下左右や右上や左下まで自由自在に動かせる方法が書いています。...
ABOUT ME
さぎのみや
さぎのみや
超書手。現在はUnityメディア「ユニシャー」の運営とゲーム開発がメインです。Unity、ライティング関係のお仕事お待ちしております。 >>詳しいプロフィール >>Amazonほしいものリスト
【Unity3D】新しいサンプルゲーム(チュートリアル)を作りました!!!

Unity有料サンプルゲーム

「Unityで3Dゲームを本格的に作っていきたい!」という人におすすめのチュートリアルとなっています。

画像のようなゲームの作り方を販売しています。色々と応用できるサンプルゲームとなっています。ぜひ、作ってみてください。

詳細
>>【Unity3Dサンプルゲーム・チュートリアル】「フリスビーを犬に届けよ!」の概要

>>BOOTHでこのチュートリアルを見る

【RT・フォローであなたのスキルが上がる】

シェアフォローする

さぎのみやのモチベが上がる

コンテンツの質が上がる

あなたの能力も上がる

あなたの
Twitterでのシェア

であなたの能力が上がります。

>>さぎのみやのツイッター(@saginomiya8)

 

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください