マップ機能ではないマップ移動3【キャラクターと障害物に当たり判定を設定】

Last-modified: 2023-09-05 (火) 08:56:11

各画像に当たり判定を設定するスクリプト記述の一例です。

  1. 障害物に当たり判定(衝突範囲)を付与する。
  2. キャラクターに当たり判定(衝突範囲)を付与する。

これにより、キャラクターと障害物がぶつかる設定にすることができます。



スクリプト記述例

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

  • スクリプト「sample_script.txt」内に
    //背景
    ~背景0 map maps/box.png | イン map 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
    //障害物当たり判定
    衝突範囲方形追加 tree1 0 0 483 898 侵入禁止
    衝突範囲方形追加 tree2 0 0 483 898 侵入禁止
    衝突範囲方形追加 tree3 0 0 483 898 侵入禁止
    衝突範囲方形追加 door 0 0 668 1107 侵入禁止
    //キャラクター
    ~絵0 lam maps/tilemap_tut/lam/front_0.png 660 350 80 | 拡大 lam 300% | イン lam 300
    //キャラクター当たり判定
    衝突範囲方形追加 lam 0 0 32 48 侵入禁止
    //キャラクター操作
    キーダウン 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. 障害物(木・ドア)に当たり判定(衝突範囲)を付与する

衝突範囲方形追加」コマンドで障害物(tree、door)に対し当たり判定(衝突範囲)を付与します。
以下、表示サンプル例。

  • スクリプト「sample_script.txt」内に
    //背景
    ~背景0 map maps/box.png | イン map 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
    //障害物当たり判定
    衝突範囲方形追加 tree1 0 0 483 898 侵入禁止
    衝突範囲方形追加 tree2 0 0 483 898 侵入禁止
    衝突範囲方形追加 tree3 0 0 483 898 侵入禁止
    衝突範囲方形追加 door 0 0 668 1107 侵入禁止
    衝突範囲方形追加
  • 今回の当たり判定のサイズは基画像の大きさで指定しています。
    指定画像(tree、door)サイズはそれぞれ 483px x 898px、668px x 1107px なので、そのままのサイズを指定します。
    素材の拡大縮小に対して当たり判定も自動的に拡大縮小されます。
    ※基画像に対して、当たり判定のサイズ・位置は自由に決められます。

    元画像サイズ
  • 「衝突範囲方形追加」オプションである「侵入禁止」を記述しておきます。
    他の当たり判定(侵入禁止同士)と重ならない(接触時にすり抜けない)ようにするために必要です。


2. キャラクターに当たり判定(衝突範囲)を付与する

衝突範囲方形追加」コマンドでキャラクター(lam)に対し当たり判定(衝突範囲)を付与します。
以下、表示サンプル例。

  • 上記に追記で
    //キャラクター
    ~絵0 lam maps/tilemap_tut/lam/front_0.png 660 350 80 | 拡大 lam 300% | イン lam 300
    //キャラクター当たり判定
    衝突範囲方形追加 lam 0 0 32 48 侵入禁止
    衝突範囲方形追加
  • 当たり判定のサイズは基画像の大きさで指定します。
    キャラクターの指定画像(lam)サイズは 32px x 48px なので、そのままのサイズを指定します。
    素材の拡大縮小に対しては当たり判定も自動的に拡大縮小されます。

    元画像サイズ
  • 「衝突範囲方形追加」オプションである「侵入禁止」を記述しておきます。
    他の当たり判定(侵入禁止同士)と重ならない(接触時にすり抜けない)ようにするために必要です。
  • このようにキャラクターと障害物の両方に「侵入禁止の衝突範囲」を付与したら、テストプレイでぶつかってみましょう。
    接触時に画像同士がすり抜ける(重なる)ことがなくなっているのが確認できます。