WOLF RPGエディター(ウディタ)/演出・システム【サイトトップへ戻る】
■マップイベントでピクチャアニメーションを表示
(更新:2023/03/02)


戦闘時に表示されるピクチャのアニメーションをマップイベントで表示する方法を紹介ます。



ショートカット
■仕様の確認
■コモンイベント[183:X[戦]技能エフェクト描画]の設定を修正
■コモンイベント[マップEv連動エフェクト表示]を設定
■マップイベントの設定

コモンデータ
ダウンロード後に右クリック→[すべて展開]で解凍し、
中に入っている「★このデータについて」をご覧ください。
必ずこのページの説明をご覧頂いた上で、
自己責任でデータをご利用ください。

基本的にダウンロードしたデータを設定すれば、下記の改造の手順を見る必要はありませんが、
改造内容が知りたい方は下記をご覧ください。


  
■仕様の確認

アニメーションの表示はコモンイベント[183:X[戦]技能エフェクト描画]を呼び出して表示します。

ただコモンイベント[183:X[戦]技能エフェクト描画]の処理は、
画面上の固定した位置にアニメーションを表示する処理であるため、
マップイベントの移動や画面のスクロールに合わせてアニメーションの表示位置が変わるような事はありません。

▼アニメーション表示中にマップイベントが移動した時


そこでアニメーションを表示するコモンイベント[183:X[戦]技能エフェクト描画]とは別に、
マップイベントの現在位置に合わせてアニメーションの表示するコモンイベント[マップEv連動エフェクト表示]を設定します。



アニメーションの表示は最大30個まで同時に表示する事ができるように設定します。

これにより、マップイベントに向かって連続で決定キーを押しても、押した分だけアニメーションが表示されます。



別のマップへ移動すると、自動的にアニメーションが全て消去します。


▲トップへ戻る▲


  
■コモンイベント[183:X[戦]技能エフェクト描画]の設定を修正

コモンイベント[183:X[戦]技能エフェクト描画]をマップ上で表示できるように改造します。

なお、改造しても戦闘中のアニメーションは、そのまま変わらず表示する事ができます。



【イベントコード】

▼ ―――――――――――――――――――――――――――――――――――
▼ 【処理の内容】
▼ 指定位置に戦闘アニメーションを表示します。
▼ 戦闘時に限らず使用可能です。

▼ 【このコモンイベント内で操作しているデータベース】

▼ 【ここから呼び出している別コモンイベント】

▼ 【どのコモンイベントから主に呼び出されているか】
▼ ―――――――――――――――――――――――――――――――――――

■DB読込(ユーザ): CSelf37[アニメコモン呼び出し?] =
         ユーザDB[ ┗ アニメーション : CSelf0[アニメ番号] : コモンEvで処理[全設定無視 ] (1 : - : 14)
■条件分岐(変数): 【1】 CSelf37[アニメコモン呼び出し?] が 0 以上
-◇分岐: 【1】 [ CSelf37[アニメコモン呼び出し?] が 0 以上 ]の場合↓
|▼ 呼び出すコモンのコモンセルフ0、1、2に、アニメ番号・X座標・Y座標を入力
|■変数操作: CSelf38[アニメコモン先] = 15000000 + 0
|■変数操作: CSelf38[アニメコモン先] += CSelf37[アニメコモン呼び出し?] * 100
|■変数操作: V[CSelf38[アニメコモン先]] = CSelf0[アニメ番号] + 0
|■変数操作: CSelf38[アニメコモン先] += 1 + 0
|■変数操作: V[CSelf38[アニメコモン先]] = CSelf1[対象X座標] + 0
|■変数操作: CSelf38[アニメコモン先] += 1 + 0
|■変数操作: V[CSelf38[アニメコモン先]] = CSelf2[対象Y座標] + 0
|▼ コモン呼び出し
|■変数操作: CSelf37[アニメコモン呼び出し?] += 500000 + 0
|■イベントの挿入: 変数[CSelf37[アニメコモン呼び出し?]]のEv ページ1
|■イベント処理中断
|■
◇分岐終了◇
■変数操作: CSelf22[基本ピクチャ番号] = 18000 + 0
■変数操作: CSelf99[全体用?] = 0 + 0
▼ Ver2.20 座標倍率を縦横別に修正
■DB読込(可変): CSelf88[座標倍率X[x10]] = 可変DB[ 基本システム用変数 : 97 : 0 ] (18 : 座標倍率X[x10] : 数値)
■DB読込(可変): CSelf89[座標倍率Y[x10]] = 可変DB[ 基本システム用変数 : 98 : 0 ] (18 : 座標倍率Y[x10] : 数値)
▼ 単体の場合は基本座標を計算する
■条件分岐(変数): 【1】 CSelf0[アニメ番号] が -1 以下
-◇分岐: 【1】 [ CSelf0[アニメ番号] が -1 以下 ]の場合↓
|■イベント処理中断
|■
◇分岐終了◇
▼ 一時ピクチャ番号算出
■変数操作: CSelf90[ピクチャカウンタ] += 1 + 0
■変数操作: CSelf90[ピクチャカウンタ] %= 99 + 0
■変数操作: CSelf25[一時ピクチャ番号] = 1 * CSelf90[ピクチャカウンタ]
■変数操作: CSelf25[一時ピクチャ番号] += CSelf22[基本ピクチャ番号] + 0
▼ 表示オプションによって補正
■DB読込(ユーザ): CSelf33[表示オプション] =
         ユーザDB[ ┗ アニメーション : CSelf0[アニメ番号] : 7 ] (1 : - : 表示オプション)
■条件分岐(変数): 【1】 CSelf33[表示オプション] が 0 と同じ 【2】 CSelf33[表示オプション] が 1 と同じ
-◇分岐: 【1】 [ CSelf33[表示オプション] が 0 と同じ ]の場合↓
|▼ 入力座標をそのまま使用
|■変数操作: CSelf20[表示元X] = CSelf1[対象X座標] + 0
|■変数操作: CSelf21[表示元Y] = CSelf2[対象Y座標] + 0
|■条件分岐(変数): 【1】 CSelf3[対象スロット] が 10 以上
|-◇分岐: 【1】 [ CSelf3[対象スロット] が 10 以上 ]の場合↓
| |▼ 敵へのエフェクトは少し上めに補正
| |■変数操作: CSelf21[表示元Y] -= CSelf89[座標倍率Y[x10]] * 4
| |■
|◇分岐終了◇
|■
-◇分岐: 【2】 [ CSelf33[表示オプション] が 1 と同じ ]の場合↓
|▼ 中央に表示(敵と味方の場合で高さが変わる)
|■変数操作: CSelf20[表示元X] = 16 * CSelf88[座標倍率X[x10]]
|■条件分岐(変数): 【1】 CSelf3[対象スロット] が 9 以下 【2】 CSelf3[対象スロット] が 10 以上
|-◇分岐: 【1】 [ CSelf3[対象スロット] が 9 以下 ]の場合↓
| |▼ 味方キャラ全体の場合
| |■変数操作: CSelf21[表示元Y] = 17 * CSelf89[座標倍率Y[x10]]
| |■
|-◇分岐: 【2】 [ CSelf3[対象スロット] が 10 以上 ]の場合↓
| |▼ 敵キャラ全体の場合
| |■変数操作: CSelf21[表示元Y] = 9 * CSelf89[座標倍率Y[x10]]
| |■
|◇分岐終了◇
|▼ 全体用フラグをオン
|■変数操作: CSelf99[全体用?] = 1 + 0
|■
◇分岐終了◇
▼ ここでポップアップ表記を行う(セルフ90番はダメージ数値のピクチャ番号補正用)
▼ パターン数だけループ

■DB読込(ユーザ): CSelf8[効果音] =
         ユーザDB[ ┗ アニメーション : CSelf0[アニメ番号] : 再生効果音 ] (1 : - : 9)
■DB読込(ユーザ): CSelf9[アニメ画像ファイル] =
         ユーザDB[ ┗ アニメーション : CSelf0[アニメ番号] : アニメ画像ファイル ] (1 : - : 0)
■DB読込(ユーザ): CSelf10[アニメパターン総数] =
         ユーザDB[ ┗ アニメーション : CSelf0[アニメ番号] : アニメパターン総数 ] (1 : - : 3)
■DB読込(ユーザ): CSelf11[アニメ横分割数] =
         ユーザDB[ ┗ アニメーション : CSelf0[アニメ番号] : アニメ画像 [ 横 ] 分割数 ] (1 : - : 1)
■DB読込(ユーザ): CSelf12[アニメ縦分割数] =
         ユーザDB[ ┗ アニメーション : CSelf0[アニメ番号] : アニメ画像 [ 縦 ] 分割数 ] (1 : - : 2)
■DB読込(ユーザ): CSelf13[描画モード(通常・加算)] =
         ユーザDB[ ┗ アニメーション : CSelf0[アニメ番号] : 描画モード ] (1 : - : 5)
■DB読込(ユーザ): CSelf14[拡大率] =
         ユーザDB[ ┗ アニメーション : CSelf0[アニメ番号] : 拡大率 ] (1 : - : 6)
■DB読込(ユーザ): CSelf15[効果音ディレイ] =
         ユーザDB[ ┗ アニメーション : CSelf0[アニメ番号] : 効果音再生ディレイ[フレーム] ] (1 : - : 10)
■DB読込(ユーザ): CSelf17[カラー補正R] =
         ユーザDB[ ┗ アニメーション : CSelf0[アニメ番号] : [色]カラー補正R(±100) ] (1 : - : 11)
■DB読込(ユーザ): CSelf18[カラー補正G] =
         ユーザDB[ ┗ アニメーション : CSelf0[アニメ番号] : [色]カラー補正G(±100) ] (1 : - : 12)
■DB読込(ユーザ): CSelf19[カラー補正B] =
         ユーザDB[ ┗ アニメーション : CSelf0[アニメ番号] : [色]カラー補正B(±100) ] (1 : - : 13)
■変数操作: CSelf17[カラー補正R]〜CSelf19[カラー補正B] += 100 + 0
▼ 効果音も鳴らしておく
■条件分岐(文字): 【1】 CSelf8[効果音]が "" 以外
-◇分岐: 【1】 [ CSelf8[効果音] "" 以外 ]の場合↓
|■変数操作: CSelf15[効果音ディレイ] 下限= 0 + 0
|■サウンド:SE ファイル[\cself[8]] 音 100% 周 100% 再生 / 遅延:CSelf15[効果音ディレイ]フレーム
|■
◇分岐終了◇
■ピクチャ[ディレイ内容リセット]:CSelf25[一時ピクチャ番号]
■条件分岐(変数): 【1】 CSelf13[描画モード(通常・加算)] が 0 と同じ
         【2】 CSelf13[描画モード(通常・加算)] が 1 と同じ
-◇分岐: 【1】 [ CSelf13[描画モード(通常・加算)] が 0 と同じ ]の場合↓
|▼ 通常描画の場合
|■ピクチャ表示:CSelf25[一時ピクチャ番号] [中心]ファイル(CSelf9[アニメ画像ファイル]) X:CSelf20[表示元X]
       Y:CSelf21[表示元Y] / 0(0)フレーム / パターン 1 / 透 0 / 通常 / 角 0 / 拡 CSelf14[拡大率]% /
       カラー R[CSelf17[カラー補正R]] G[CSelf18[カラー補正G]] B[CSelf19[カラー補正B]](スクロールとリンクにチェック)
|■
-◇分岐: 【2】 [ CSelf13[描画モード(通常・加算)] が 1 と同じ ]の場合↓
|▼ 加算描画の場合
|■ピクチャ表示:CSelf25[一時ピクチャ番号] [中心]ファイル(CSelf9[アニメ画像ファイル]) X:CSelf20[表示元X]
       Y:CSelf21[表示元Y] / 0(0)フレーム / パターン 1 / 透 0 / 加算 / 角 0 / 拡 CSelf14[拡大率]% /
       カラー R[CSelf17[カラー補正R]] G[CSelf18[カラー補正G]] B[CSelf19[カラー補正B]](スクロールとリンクにチェック)
|■
◇分岐終了◇

■変数操作: CSelf30[現在アニメパターン] = 0 + 0
■変数操作: CSelf31[ディレイフレーム] = 0 + 0
■ループ開始
|■変数操作: CSelf30[現在アニメパターン] += 1 + 0
|■条件分岐(変数): 【1】 CSelf30[現在アニメパターン] が CSelf10[アニメパターン総数] 超
|-◇分岐: 【1】 [ CSelf30[現在アニメパターン] が CSelf10[アニメパターン総数] 超 ]の場合↓
| |■ループ中断
| |■
|◇分岐終了◇
|■ピクチャ移動:CSelf25[一時ピクチャ番号] 相対X:0 Y:0 / 0(CSelf31[ディレイフレーム])フレーム /
       パターン CSelf30[現在アニメパターン] / 透 255 / 表示形式:同値 / 角 0 / 拡 同値 / カラー 同値
|■DB読込(ユーザ): CSelf31[ディレイフレーム] +=
         ユーザDB[ 1 : CSelf0[アニメ番号] : 4 ] (┗ アニメーション : - : 1パターンのウェイト[フレーム])
|■
◇ループここまで◇◇
■DB読込(ユーザ): CSelf31[ディレイフレーム] +=
         ユーザDB[ 1 : CSelf0[アニメ番号] : 4 ] (┗ アニメーション : - : 1パターンのウェイト[フレーム])
■ピクチャ消去:CSelf25[一時ピクチャ番号] / 1(CSelf31[ディレイフレーム])フレーム
■変数操作+: CSelf40 = マップイベントID(コモンなら呼び出し元ID)
■条件分岐(変数): 【1】 CSelf40 が 0 以上
-◇分岐: 【1】 [ CSelf40 が 0 以上 ]の場合↓
|■イベント処理中断
|■
◇分岐終了◇

■DB読込(ユーザ): CSelf15[効果音ディレイ] =
         ユーザDB[ 1 : CSelf0[アニメ番号] : 8 ] (┗ アニメーション : - : ダメージ表示ウェイト[フレーム])
■変数操作: CSelf15[効果音ディレイ] 下限= 1 + 0
■変数操作: CSelf15[効果音ディレイ] += 2 + 0
■ウェイト:CSelf15[効果音ディレイ] フレーム



▼補足

100行目104行目にある【ピクチャ表示】の設定で「スクロールとリンク」にチェックを入れます。



この設定によって、主人公が移動して画面がスクロールしても、表示位置のずれが無くなります。



117行目にある【ピクチャ移動】の設定を以下のように変更。

相対モード:チェックを入れる
X:0
Y:0



この設定変更によって、アニメーション表示中の表示位置が自由に変えられるようになります。



123行目に以下のイベントを追加。

■変数操作+: CSelf40 = マップイベントID(コモンなら呼び出し元ID)
■条件分岐(変数): 【1】 CSelf40 が 0 以上
-◇分岐: 【1】 [ CSelf40 が 0 以上 ]の場合↓
|■イベント処理中断
|■
◇分岐終了◇

上記の設定の追加によって、マップイベントからコモンイベント[183:X[戦]技能エフェクト描画]を呼び出した場合は、
ここで処理を中断します。

上記の追加設定が無く、このまま処理を続けていくと最後にあるウェイトの設定が実行してしまい、
イベント処理が一時停止してしまいます。



コモンID「183」以外には設定しないでください。


▲トップへ戻る▲


  
■コモンイベント[マップEv連動エフェクト表示]を設定

マップイベントの現在位置に合わせてアニメーションの表示位置が修正するイベントを設定します。



コモンイベントのセルフ変数の一覧です。

コモンセルフ変数
番号 名前 使用内容
10 マップID確認 別のマップへ移動していないかどうかを確認。
11 呼び出し確認 マップイベントから呼び出して処理しているかどうかを確認。
変数の値 処理内容
0以上 マップイベントから呼び出して処理中
-1 コモンイベントの並列実行で処理中
12 ピクチャ使用有無 ピクチャが使用中であるかどうかを確認。使用中のみ表示設定を行う。
13 処理するMapEv マップイベントのイベントIDを設定。
14 ピクチャID アニメーション表示用のピクチャIDを設定。
15 アニメーションの表示位置Xを設定。
16 アニメーションの表示位置Yを設定。
20 変数設定40-69 セルフ変数[40〜69]にマップIDを設定。
21 変数設定70-99 セルフ変数[70〜99]にアニメーションのピクチャIDを設定。
22 変数呼出40-69 セルフ変数[40〜69]に保存されたマップIDを取得。
23 変数呼出70-99 セルフ変数[70〜99]に保存されたアニメーションのピクチャIDを取得。
40〜69 マップIDを保存。
70〜99 アニメーション用のピクチャIDを保存。

セルフ変数[40〜69][70〜99]は、[40][70][41][71]と言ったように30番のずれで連動して使用されます。



コモンイベントは使用していないコモンIDに設定してください。

【イベントコード表示】

■コモンイベント「マップEv連動エフェクト表示」

起動条件:並列実行(常時)

■変数操作+: CSelf10[マップID確認] -= 現在のマップID
■変数操作+: CSelf11[呼び出し確認] = マップイベントID(コモンなら呼び出し元ID)
■条件分岐(変数): 【1】 CSelf11[呼び出し確認] が 0 以上
         【2】 CSelf20[変数設定40-69] が 0 と同じ
         【3】 CSelf10[マップID確認] が 0 以外
-◇分岐: 【1】 [ CSelf11[呼び出し確認] が 0 以上 ]の場合↓
|■変数操作: V[CSelf20[変数設定40-69]] = CSelf11[呼び出し確認] + 0
|■変数操作: V[CSelf21[変数設定70-99]] = コモンEv183セルフ25[一時ピクチャ番号] + 0
|■変数操作: CSelf20[変数設定40-69]〜CSelf21[変数設定70-99] += 1 + 0
|■条件分岐(変数): 【1】 CSelf20[変数設定40-69] が 1600070 以上
|-◇分岐: 【1】 [ CSelf20[変数設定40-69] が 1600070 以上 ]の場合↓
| |■変数操作: CSelf20[変数設定40-69]〜CSelf21[変数設定70-99] -= 30 + 0
| |■
|◇分岐終了◇
|■
-◇分岐: 【2】 [ CSelf20[変数設定40-69] が 0 と同じ ]の場合↓
|■変数操作: CSelf20[変数設定40-69] = 1600040 + 0
|■変数操作: CSelf21[変数設定70-99] = 1600070 + 0
|■
-◇分岐: 【3】 [ CSelf10[マップID確認] が 0 以外 ]の場合↓
|■ピクチャ[ディレイ内容リセット]:18000 〜 18098
|■ピクチャ消去:18000 〜 18098 / 0(0)フレーム
|■
◇分岐終了◇
■変数操作+: CSelf10[マップID確認] = 現在のマップID
■変数操作: CSelf22[変数呼出40-69] = 1600039 + 0
■変数操作: CSelf23[変数呼出70-99] = 1600069 + 0
■回数付きループ [ 30 ]回
|■変数操作: CSelf22[変数呼出40-69]〜CSelf23[変数呼出70-99] += 1 + 0
|■変数操作: CSelf13[処理するMapEv] = V[CSelf22[変数呼出40-69]] + 0
|■変数操作: CSelf14[ピクチャID] = V[CSelf23[変数呼出70-99]] + 0
|■変数操作+: CSelf12[ピクチャ使用有無] = ピクチャ:CSelf14[ピクチャID] の ピクチャが使用中?(1=YES)
|■条件分岐(変数): 【1】 CSelf12[ピクチャ使用有無] が 0 と同じ
          【2】 CSelf13[処理するMapEv] が -1 と同じ
|-◇分岐: 【1】 [ CSelf12[ピクチャ使用有無] が 0 と同じ ]の場合↓
| |■変数操作: V[CSelf22[変数呼出40-69]] = -1 + 0
| |■ループ開始へ戻る
| |■
|-◇分岐: 【2】 [ CSelf13[処理するMapEv] が -1 と同じ ]の場合↓
| |■ループ開始へ戻る
| |■
|◇分岐終了◇
|■変数操作+: CSelf15[X] = キャラ[CSelf13[処理するMapEv]] の 画面X座標
|■変数操作+: CSelf16[Y] = キャラ[CSelf13[処理するMapEv]] の 画面Y座標
|■変数操作: CSelf16[Y] -= Sys118:[読]タイルサイズ / 2
|■変数操作+: CSelf15[X] -= ピクチャ:CSelf14[ピクチャID] の X座標
|■変数操作+: CSelf16[Y] -= ピクチャ:CSelf14[ピクチャID] の Y座標
|■ピクチャ移動:CSelf14[ピクチャID] 相対X:CSelf15[X] Y:CSelf16[Y] / 0(0)フレーム /
パターン 同値 / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
|■
◇ループここまで◇◇


▲トップへ戻る▲


  
■マップイベントの設定

マップイベントにアニメーションを表示する設定を行います。

マップイベントのグラフィックや歩行設定などは自由に行ってください。



【イベントの挿入】の設定は、
必ずコモンイベント[183:X[戦]技能エフェクト描画]を呼び出したあとに、
コモンイベント[マップEv連動エフェクト表示]を呼び出してください。

【イベントコード表示】

■マップイベント

起動条件:決定キーで実行

■変数操作+: このEvのセルフ変数0 = このマップイベント の 画面X座標
■変数操作+: このEvのセルフ変数1 = このマップイベント の 画面Y座標
■変数操作: このEvのセルフ変数1 -= Sys118:[読]タイルサイズ / 2
■イベントの挿入[名]: ["X[戦]技能エフェクト描画"] <コモンEv 183> /
            18 / このEvのセルフ変数0 / このEvのセルフ変数1 / 0
■イベントの挿入[名]: ["マップEv連動エフェクト表示"] <コモンEv 215>


以上で設定完了です。


▲トップへ戻る▲



◎関連ページ

◆キャラクターイベントを作る

YADOT-WOLFトップ  気紛れな空間へ戻る  メール