マップ機能ではないマップ移動5【ゲーム画面よりも広いマップの移動・キャラクターにカメラ設定】

Last-modified: 2023-09-05 (火) 08:59:54

カメラ移動とカメラ範囲を制限するスクリプト記述の一例です。

  1. 背景(マップ)を任意の広さにする。
  2. カメラを制御する。

これにより、カメラを制御し表示画面以上のマップを自由に移動する表現が可能となります。



スクリプト記述例

スクリプト記述例はLight.vn基本サンプル(公式本体)を使用した場合を想定しています。ダウンロードはこちらから。

  • 新規スクリプト「sample_script.txt」内に
    //背景
    ~背景0 map maps/box.png | イン map 300
    ~絵0 map2 bg/beautiful_park.png 1280 0 0 | 拡大 map2 100% | イン map2 300
    ~絵0 map3 bg/monele_arts_building.png 0 -720 0 | 拡大 map3 100% | イン map3 300
    ~絵0 map4 bg/park_evening.png 1280 -720 0 | 拡大 map4 100% | イン map4 300
    //障害物
    ~絵0 tree1 maps/tree_02.png 50 -102 80 | 拡大 tree1 50% | イン tree1 300
    ~絵0 tree2 maps/tree_02.png 750 -450 80 | 拡大 tree2 50% | イン tree2 300
    ~絵0 tree3 maps/tree_02.png 750 250 80 | 拡大 tree3 50% | イン tree3 300
    ~絵0 door maps/door_cl.png 850 -200 80 | 拡大 door 20% | イン door 300
    ~絵0 lam maps/tilemap_tut/lam/front_0.png 660 350 80 | 拡大 lam 300% | イン lam 300
    カメラ追走 lam x y 0 0 0
    カメラ範囲x 640 1920
    カメラ範囲y -360 360
    //キャラクター操作
    キーダウン a 方向移動x lam -400ups
    キーダウン d 方向移動x lam 400ups
    キーダウン w 方向移動y lam -400ups
    キーダウン s 方向移動y lam 400ups
    キーアップ a 方向移動x lam 0ups
    キーアップ d 方向移動x lam 0ups
    キーアップ w 方向移動y lam 0ups
    キーアップ s 方向移動y lam 0ups
    ~待機 続行禁止
    カメラ制御
  • プレビュー画面は「自由カメラ」を使用して、画面を引いています。


スクリプト解説

背景を広げ、キャラクターとゲーム画面のカメラ制御の方法を解説していきます。


1. マップである背景を広げる

背景」コマンドは1枚しか設定できないため、「」コマンドを使用してマップを広げていきます。
今回はゲーム画面 1280px x 720px の2倍の大きさにしてみました。
以下、表示サンプル例。

  • スクリプト「sample_script.txt」内に
    //背景
    ~背景0 map maps/box.png | イン map 300
    ~絵0 map2 bg/beautiful_park.png 1280 0 0 | 拡大 map2 100% | イン map2 300
    ~絵0 map3 bg/monele_arts_building.png 0 -720 0 | 拡大 map3 100% | イン map3 300
    ~絵0 map4 bg/park_evening.png 1280 -720 0 | 拡大 map4 100% | イン map4 300
    マップ拡大
  • 画面外に画像を配置の際は「自由カメラ」モードを使用します。
    プレビュー画面上のラジオボタン「自由」をオンにすると「プレイヤー基準」から切り替えることができます。
  • 自由カメラの操作は「コマンドタブ」内の「自由カメラ操作法」に記載されています。

    自由カメラ操作法
  • まずはマウスホイールを使って拡大縮小をしてみましょう。
    縮小することによって配置位置が見やすくなります。
  • 操作をミスした場合など、カメラを初期位置に戻したい場合は「自由カメラタブ」の「自由カメラ初期化」ボタンを押すことで元に戻すことができます。
    自由カメラ使用中に「プレイヤー視点」にすることもできます。
    自由カメラモードをやめたいときは、ラジオボタン「プレイヤー基準」をオンにするとエディターデフォルトカメラに戻ります。

    自由カメラタブ


2. カメラを制御する設定

カメラ追走」コマンドでキャラクターの移動にカメラを連動させます。
カメラ範囲x」コマンド「カメラ範囲y」コマンドでゲーム画面でのカメラ表示範囲を制限します。
以下、表示サンプル例。

  • 上記に追記で
    //キャラクター
    ~絵0 lam maps/tilemap_tut/lam/front_0.png 660 350 80 | 拡大 lam 300% | イン lam 300
    カメラ追走 lam x y 0 0 0
    カメラ範囲x 640 1920
    カメラ範囲y -360 360
    カメラ操作
  • カメラ追走」のオプションはすべて「0」にしています。
    数値を変えるとカメラの動きがどう変化するかを試してみるのも面白いです。
  • カメラ範囲」設定の最小値・最大値により、ゲーム画面外を表示させない制限をします。
    画面外を表示させない限界のカメラ範囲は、全体マップの両端からそれぞれ内側へ、作品解像度の1/2の値だけ変動させたものとなります。
    今回は画面を「上」「右」に広げているので下記の計算式になっています。

    左:0+(画面横幅/2) 右:画面横幅最大-(画面横幅/2)

    上:-画面縦幅+(画面縦幅/2) 下:画面縦幅-(画面縦幅/2)

  • 例ではゲーム画面(作品解像度)が 1280px x 720px で、上に720px、右に1280px 広げているので下記の計算式となります。

    左:0+(1280/2) 右:2560-(1280/2)

    上:-720+(720/2) 下:720-(720/2)