コガネブログ

平日更新を目標に Unity や C#、Visual Studio などのゲーム開発アレコレを書いていきます

【Unity 入門】全方位シューティングを作る 第4回 プレイヤーの移動範囲の制限

目次

前回のチュートリアル

はじめに

前回は、プレイヤーを WASD キーや矢印キーで操作できるようにしました
今回は、プレイヤーが画面外に出ないように移動範囲を制限していきます

プレイヤーの移動範囲の制限

f:id:baba_s:20180331103542g:plain

プレイヤーが画面外まで移動できてしまうため、スクリプトを修正していきます

f:id:baba_s:20180331103711p:plain

前回、「Player」スクリプトを作成したときと同じ手順で、
「Scripts」フォルダ内に「Utils」スクリプトを作成します
そして、作成した「Utils」スクリプトに下記のコードを記述します

using UnityEngine;

// 便利な関数を管理する静的クラス
public static class Utils
{
    // 移動可能な範囲
    public static Vector2 m_moveLimit = new Vector2( 4.7f, 3.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
        );
    }
}

これで、プレイヤーの移動範囲を制限する関数の作成ができたので、
「Player」スクリプトで上記の関数を使用して、
プレイヤーの移動範囲を制限するようにします

「Player」スクリプトをコードエディタで開き、
Update 関数の末尾に下記のコードを記述します

// プレイヤーが画面外に出ないように位置を制限する
transform.localPosition = Utils.ClampPosition( transform.localPosition );

f:id:baba_s:20180331104055g:plain

これで、プレイヤーを操作すると、画面外に出ないようになっていることが確認できます
以上で、プレイヤーの移動範囲の制限の作成が完了しました

次回は、プレイヤーがマウスカーソルの方を向くようにしていきます

次のチュートリアル

チュートリアル一覧