マップ機能ではないマップ移動2【歩行アニメを適用したキー操作】

Last-modified: 2023-09-05 (火) 08:33:58

キー操作でキャラクターを動かした時、それぞれの方向の歩行アニメを適用するスクリプト記述の一例です。

  1. 「アニメ登録」で歩行アニメを設定しておく。
  2. 「方向移動」「画像」などで各歩行設定スクリプトを記述する。
  3. 「キートリガ」の発動コマンドに「スクリプト」を指定する。

これにより、マップ移動中のキャラクターに歩行アニメを適用することができます。



スクリプト記述例

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

  • スクリプト「sample_script.txt」内に
    //歩行アニメ登録
    ~アニメ登録 lam_fr 1 maps/tilemap_tut/lam/front_m1.png 100 maps/tilemap_tut/lam/front_0.png 100 maps/tilemap_tut/lam/front_p1.png 100 0
    ~アニメ登録 lam_ba 1 maps/tilemap_tut/lam/back_m1.png 100 maps/tilemap_tut/lam/back_0.png 100 maps/tilemap_tut/lam/back_p1.png 100 0
    ~アニメ登録 lam_le 1 maps/tilemap_tut/lam/left_m1.png 100 maps/tilemap_tut/lam/left_0.png 100 maps/tilemap_tut/lam/left_p1.png 100 0
    ~アニメ登録 lam_ri 1 maps/tilemap_tut/lam/right_m1.png 100 maps/tilemap_tut/lam/right_0.png 100 maps/tilemap_tut/lam/right_p1.png 100 0
    //グラフィックス
    ~背景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
    //キャラクター
    ~絵0 lam maps/tilemap_tut/lam/front_0.png 660 350 80 | 拡大 lam 300% | イン lam 300
    //キー操作時に歩行スクリプト発動
    キーダウン a スクリプト sample_script.txt 左進
    キーダウン d スクリプト sample_script.txt 右進
    キーダウン w スクリプト sample_script.txt 上進
    キーダウン s スクリプト sample_script.txt 下進
    キーアップ a スクリプト sample_script.txt 左停止
    キーアップ d スクリプト sample_script.txt 右停止
    キーアップ w スクリプト sample_script.txt 上停止
    キーアップ s スクリプト sample_script.txt 下停止
    ~待機 続行禁止
    //-----------------------------------------------------------------------
    //歩行開始スクリプト
    栞 左進
    画像 lam lam_le
    方向移動x lam -400ups
    スクリプト終了
    栞 右進
    画像 lam lam_ri
    方向移動x lam 400ups
    スクリプト終了
    栞 上進
    画像 lam lam_ba
    方向移動y lam -400ups
    スクリプト終了
    栞 下進
    画像 lam lam_fr
    方向移動y lam 400ups
    スクリプト終了
    //歩行停止スクリプト
    栞 左停止
    画像 lam maps/tilemap_tut/lam/left_0.png
    方向移動x lam 0ups
    スクリプト終了
    栞 右停止
    画像 lam maps/tilemap_tut/lam/right_0.png
    方向移動x lam 0ups
    スクリプト終了
    栞 上停止
    画像 lam maps/tilemap_tut/lam/back_0.png
    方向移動y lam 0ups
    スクリプト終了
    栞 下停止
    画像 lam maps/tilemap_tut/lam/front_0.png
    方向移動y lam 0ups
    スクリプト終了
    歩行アニメを適用したキー操作
  • キーボードの「a」キー「d」キー「w」キー「s」キーを押すとキャラクターが移動し、離すと止まるようになっています。
  • 上下左右の移動中に適した歩行アニメーションを行うようになっています。
    開始時に基キャラクターの1枚画像をアニメーションに変換し、停止時にアニメーションを1枚画像に変換しています。


スクリプト解説

移動中に歩行アニメを適用する方法を解説していきます。


1. 指定する歩行アニメーニョンを登録しておく

まずは「アニメ登録」コマンドにて、使用する歩行アニメを登録しておきましょう。
上下左右のそれぞれの画像を使用します。
歩行素材画像
「背景」「障害物」「キャラクター」も配置しておきます。
以下、表示サンプル例。

  • スクリプト「sample_script.txt」内に
    //歩行アニメ登録
    ~アニメ登録 lam_fr 1 maps/tilemap_tut/lam/front_m1.png 100 maps/tilemap_tut/lam/front_0.png 100 maps/tilemap_tut/lam/front_p1.png 100 0
    ~アニメ登録 lam_ba 1 maps/tilemap_tut/lam/back_m1.png 100 maps/tilemap_tut/lam/back_0.png 100 maps/tilemap_tut/lam/back_p1.png 100 0
    ~アニメ登録 lam_le 1 maps/tilemap_tut/lam/left_m1.png 100 maps/tilemap_tut/lam/left_0.png 100 maps/tilemap_tut/lam/left_p1.png 100 0
    ~アニメ登録 lam_ri 1 maps/tilemap_tut/lam/right_m1.png 100 maps/tilemap_tut/lam/right_0.png 100 maps/tilemap_tut/lam/right_p1.png 100 0
    //グラフィックス
    ~背景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
    //キャラクター
    ~絵0 lam maps/tilemap_tut/lam/front_0.png 660 350 80 | 拡大 lam 300% | イン lam 300
    アニメ登録・グラフィックス
  • アニメ登録詳細、それぞれ100ミリ秒表示・変化タイプは画像間の補間なし「0
    「上」---- アニメ個体名「lam_ba」 後ろ向き1(back_m1.png)→ 後ろ向き停止(back_0.png)→ 後ろ向き2(back_p1.png)の順番でループ。
    「下」---- アニメ個体名「lam_fr」 正面1(front_m1.png)→ 正面停止(front_0.png)→ 正面2(front_p1.png)の順番でループ。
    「左」---- アニメ個体名「lam_le」 左向き1(left_m1.png)→ 左向き停止(left_0.png)→ 左向き2(left_p1.png)の順番でループ。
    「右」---- アニメ個体名「lam_ri」 右向き1(right_m1.png)→ 右向き停止(right_0.png)→ 右向き2(right_p1.png)の順番でループ。


2. 歩行スクリプト(移動設定)を記述する

キーダウン」コマンド指定用の歩行開始スクリプト「左進」「右進」「上進」「下進」を記述します。
それぞれ「画像」「方向移動」の2つのコマンドを実行するようになっています。
以下、表示サンプル例。

  • 上記(「~待機 続行禁止」以降の行)に追記で
    //歩行開始スクリプト
    栞 左進
    画像 lam lam_le
    方向移動x lam -400ups
    スクリプト終了
    栞 右進
    画像 lam lam_ri
    方向移動x lam 400ups
    スクリプト終了
    栞 上進
    画像 lam lam_ba
    方向移動y lam -400ups
    スクリプト終了
    栞 下進
    画像 lam lam_fr
    方向移動y lam 400ups
    スクリプト終了
    歩行スクリプト・移動設定
  • 」「スクリプト終了」を使い、進む方向のコマンドをまとめます。
  • まずは「画像」コマンドでキャラクター1枚絵(lam)を歩行アニメーションに変換します。
    アニメ登録名「lam_le」(左)、「lam_ri」(右)、「lam_ba」(上)、「lam_fr」(下)
  • そしてそれと同時に「方向移動」コマンドで目的方向への移動速度の設定します。
  • キーダウン」コマンドで、それぞれの「」を「スクリプト」コマンドで発動させることで、複数のコマンド(画像、方向移動)を実行することができます。


3. 歩行スクリプト(停止設定)を記述する

キーアップ」コマンド指定用の歩行停止スクリプト「左停止」「右停止」「上停止」「下停止」を記述します。
こちらもそれぞれ「画像」「方向移動」の2つのコマンドを実行するようになっています。
以下、表示サンプル例。

  • 上記に追記で
    //歩行停止スクリプト
    栞 左停止
    画像 lam maps/tilemap_tut/lam/left_0.png
    方向移動x lam 0ups
    スクリプト終了
    栞 右停止
    画像 lam maps/tilemap_tut/lam/right_0.png
    方向移動x lam 0ups
    スクリプト終了
    栞 上停止
    画像 lam maps/tilemap_tut/lam/back_0.png
    方向移動y lam 0ups
    スクリプト終了
    栞 下停止
    画像 lam maps/tilemap_tut/lam/front_0.png
    方向移動y lam 0ups
    スクリプト終了
    歩行スクリプト・停止設定
  • 」「スクリプト終了」を使い、停止のコマンドをまとめます。
  • 今度は「画像」コマンドで歩行アニメーションをキャラクター1枚絵(lam)に戻します。
    この変換によりアニメーションを停止させることができます。
    1枚絵「left_0.png」(左)、「right_0.png」(右)、「back_0.png」(上)、「front_0.png」(下)
    「アニメ再生」「アニメ一時停止」などのコマンドでも同じようにアニメ開始・停止を扱えますが、今回は記述が増えてしまうだけだったので省略しました。
  • それと同時に「方向移動」コマンドで移動速度を「0」にすることで移動を停止させます。
  • キーアップ」コマンドで、それぞれの「」を「スクリプト」コマンドで発動させることで、複数のコマンド(画像、方向移動)を実行することができます。


4.「スクリプト」コマンドで各歩行スクリプトを呼び出す

キートリガの発動コマンドに「スクリプト」コマンドを指定します。
スクリプト」コマンドでは「歩行開始スクリプト」「歩行停止スクリプト」を実行するように、対応する「」を指定します。
以下、表示サンプル例。

  • 上記(「歩行開始スクリプト」よりも上の行)に追記で
    //キー操作時に歩行スクリプト発動
    キーダウン a スクリプト sample_script.txt 左進
    キーダウン d スクリプト sample_script.txt 右進
    キーダウン w スクリプト sample_script.txt 上進
    キーダウン s スクリプト sample_script.txt 下進
    キーアップ a スクリプト sample_script.txt 左停止
    キーアップ d スクリプト sample_script.txt 右停止
    キーアップ w スクリプト sample_script.txt 上停止
    キーアップ s スクリプト sample_script.txt 下停止
    ~待機 続行禁止
    //-----------------------------------------------------------------------
    キー操作・スクリプト発動
    例では「a」キー「d」キー「w」キー「s」キーを操作キーとして割り当てています。
  • 今回は「キーダウン」「キーアップ」の発動コマンドに「方向移動」ではなく「スクリプト」を指定します。
    歩行アニメと方向移動など、同時に複数のコマンドを実行させる時には「」と「スクリプト終了」で挟んだ複数コマンドを「スクリプト」コマンドで呼び出します。
  • 待機 続行禁止」は、以降に記述するスクリプトを読み込まないようにするため、ここで止めています。
    今回は以降の行に「歩行スクリプト」を記述しているため、必須記述となります。