WOLF RPGエディター(ウディタ)[3.337]/基本システム【サイトトップへ戻る】
■コモンイベント[039:■主人公ピクセル移動切り替え]の解説
(更新:2024/05/18)


コモンイベント[039:■主人公ピクセル移動切り替え]について解説します。


ショートカット
■コモンイベント[039:■主人公ピクセル移動切り替え]って何?
■移動速度に関して
■[入力の数/結果を返す]について
■コモンイベント呼び出しの一覧
■セルフ変数の一覧
■イベントコマンドの解説

基本システムに関する説明は別ページに記載しています。
【基本システムに関する説明ページを見る】

コモンイベントの一覧と補足説明のページも用意しています。
【コモンイベントの一覧と補足説明のページを開く】


  
■コモンイベント[039:■主人公ピクセル移動切り替え]って何?

イベントコマンド【イベントの挿入】を使って
コモンイベント[039:■主人公ピクセル移動切り替え]を呼び出して「モード=1」にすると、
主人公がピクセル単位で移動するようになります。

▼イベントコマンドの設定画面




処理としては、イベントコマンド【キャラエフェクト】の「ピクセル移動」を使って、
表示位置をずらしてピクセル移動を実現させています。

マップイベントの実行などは、通常通りに0.5マス単位で処理しており、
ピクセル移動の移動量が0.5マスの範囲を超えたら、0.5マスの座標位置が変わります。



ピクセル移動は表示位置をずらす処理であるため、移動しても移動アニメが実行されません。

そのため…
■キャラエフェクト:主人公[移動アニメ強制] => ON
を実行して、ピクセル移動の時に強制的に移動アニメーションを表示させています。



細かい移動ができる反面、1マス幅の通路へ移動する場合、1ピクセルでもずれていると移動する事ができません。

▼上へ移動できない


他にもイベントコマンド【キャラクターの動作指定】で主人公の動作がうまく機能しないなど、
通常の主人公の処理とは異なる部分があります。



ピクセル移動=作品の評価が上がる」と言う訳では無いので、ピクセル移動が必要かどうかを見極めた上でご使用ください。


▲トップへ戻る▲


  
■移動速度に関して

移動速度はセルフ[95〜97]の設定値で決まります。

設定値は3〜5行目にある…
■変数操作: CSelf95[最高速度(20-30推奨)] = 30 + 0
■変数操作: CSelf96[加速量(2-3推奨)] = 3 + 0
■変数操作: CSelf97[減速度合い(大きいほど止まるのが遅い、1-10程度)] = 7 + 0
で設定しています。

セルフ[95]の値は52〜53行目にある…
■変数操作: CSelf13[X最大速度[1/10]] = CSelf95[最高速度(20-30推奨)] + 0
■変数操作: CSelf14[Y最大速度[1/10]] = CSelf95[最高速度(20-30推奨)] + 0
の設定により、セルフ[13〜14]にコピーされています。



▼右キーを押し続けた場合

右キーを押し続けた場合、82行目にある…
■変数操作: CSelf11[X速度[1/10]] += CSelf96[加速量(2-3推奨)] + 0
の設定により、セルフ[11]セルフ[96]の値「3」が加算されます。

右キーを押し続けるとセルフ[11]の値が「3 → 6 → 9」と徐々に増えていきます。



そして、83行目にある…
■変数操作: CSelf11[X速度[1/10]] 上限= CSelf13[X最大速度[1/10]] + 0
の設定により、セルフ[11]の値が「31以上」の場合は「30」に修正されます。



93行目にある…
■変数操作: CSelf15[内部余り値X[1/10]] += CSelf11[X速度[1/10]] + 0
の設定によって、セルフ[15]セルフ[11]の値(1〜30)が加算されます。



106行目にある…
■変数操作: CSelf17[移動量X] = CSelf15[内部余り値X[1/10]] / 10
の設定によって、セルフ[17]に「1〜3」の値が設定され、
このセルフ[17]の値が1フレームの移動量になります。

セルフ[15]の値は、10以上、または-10以下の値が削除され、「-9〜9」になります。
そして「-9〜9」の値に次のフレームでセルフ[11]の値(1〜30)が加算されます。



右へ移動していた状態から左に移動した場合は、77行目にある…
■変数操作: CSelf11[X速度[1/10]] -= CSelf96[加速量(2-3推奨)] + 0
によってセルフ[11]の値が減算され、右へ移動する移動速度が遅くなり、
そしてセルフ[11]の値がマイナスになると、左へ移動し始めます。



▼方向キーを押していない場合

左右キーを押していない場合は以下の処理によって減速し、最終的に停止します。
■変数操作: CSelf11[X速度[1/10]] -= CSelf11[X速度[1/10]] / CSelf97[減速度合い(大きいほど止まるのが遅い、1-10程度)]
■変数操作: CSelf19[絶対値] 絶対値= CSelf11[X速度[1/10]] + 0
■変数操作: CSelf11[X速度[1/10]] -= CSelf11[X速度[1/10]] / CSelf19[絶対値]

セルフ[97]=7」の場合で、右キーを押し続けてセルフ[11]の速度が「30」である場合は…
30 -= 30 / 7 + 0 → セルフ[11]が「26」になる
26 絶対値= 26 + 0
26 -= 26 / 26 + 0
→ セルフ[11]が「25」になる
と言った処理によって、左右キーを離した1フレームあとで、移動速度が「30」から「25」に減速します。

さらに左右キーを離した時間が長くなるとセルフ[11]の値は「25→21→17→14→11→9→7→5→4→3→2→1→0」と少なくなっていき、
最終的には「0=停止」になります。

セルフ[11]の値はセルフ[15]に加算されるため、
25+21+17+14+11+9+7+5+4+3+2+1」の値(合計119)はセルフ[15]に加算されます。

セルフ[15]の値は「10=1ピクセル右に進む」なので、合計で「119」の値がセルフ[15]に加算されると、
最高速度から停止するまでに「11〜12ピクセル」は進みます。


▲トップへ戻る▲


  
■[入力の数/結果を返す]について

▼数値1/コモンセルフ0「モード」
ONにするとピクセル移動を実行します。


▲トップへ戻る▲


  
■コモンイベント呼び出しの一覧

コモンイベント[039:■主人公ピクセル移動切り替え]を呼び出しているコモンイベントや、
コモンイベント[039:■主人公ピクセル移動切り替え]から呼び出しているコモンイベントはありません。


▲トップへ戻る▲


  
■セルフ変数の一覧

コモンイベント[039:■主人公ピクセル移動切り替え]のセルフ変数の一覧です。

セルフ変数
番号 名前 使用内容
0 モード ピクセル移動のON/OFFの切り替えで使用。
1 ピクセル移動の開始処理を実行
-1 ピクセル移動の終了処理を実行
処理が終わると値が「0」になります。
10 格納先ポインタ 主人公に関する変数呼び出し値の設定で使用。
9180006 向き情報を操作する時に使用。
9180007
9180008
ピクセル表示位置を操作する時に使用。
【変数呼び出し値の説明を見る】
11 X速度[1/10] 現在の横移動の速度を設定。
実際の移動速度は10分の1になるので、
「30」の場合は1フレームで3ピクセルを移動。
12 Y速度[1/10] 現在の縦移動の速度を設定。
13 X最大速度[1/10] セルフ[95]の値を設定。(初期値=30)
14 Y最大速度[1/10] セルフ[95]の値を設定。(初期値=30)
15 内部余り値X[1/10] セルフ[11]の値を加算し、
10以上=右に1ピクセル移動」
-10以下=左に1ピクセル移動
で処理。
「-9〜9」の値は次のフレームで使用。
16 内部余り値Y[1/10] セルフ[12]の値を加算し、
10以上=下に1ピクセル移動」
-10以下=上に1ピクセル移動
で処理。
17 移動量X 実際に移動する横移動量。
18 移動量Y 実際に移動する縦移動量。
19 絶対値 数値を絶対値に変える時に使用。
20 上下方向キー 上下キーのキーコードを取得。
21 左右方向キー 左右キーのキーコードを取得。
95 最高速度(20-30推奨) 1フレームで移動できる最大値を設定。
移動速度の計算では最後に10分の1にするので、
「30」の場合の最高速度は、
1フレームで3ピクセルの移動となる。
「25」の場合は1フレームで2ピクセルの移動と
3ピクセルの移動を交互に行うような感じになる。
96 加速量(2-3推奨) 1フレームでの加速量を設定。
セルフ[96]が「3」の場合は、セルフ[11〜12]
1フレームごとに「3→6→9→12」と加速。
上限はセルフ[95]の値となる。
97 減速度合い(大きいほど止まるのが遅い、1-10程度) 方向キーを押していない時の減速度合いを設定。
設定値が大きいと減速するのに時間がかかり、
暫く歩き続けます。
98 向き固定中 主人公に対して「向き固定」を設定している場合は、
「1」を設定。
99 起動フラグ 起動条件の変数として使用。
1 コモン起動する
0 コモン起動しない

【変数の一覧を別ウィンドウで表示】


▲トップへ戻る▲


  
■イベントコマンドの解説

イベントコマンドの解説を行います。

なお、見た目で設定内容が分かるような簡単なイベントコマンドの解説は省略しています。

処理内容
0-8 ■回数付きループ [ 1 ]回
初期値の設定を行います。
  1-5 ▼ ★ユーザのパラメータ設定箇所。自由に設定して構いません!
▼ ※最高速度を10で割り切れる値にしないと移動時に「仲間」が震えます。主人公一人なら好きな値でOK!
セルフ[95-97]に初期値を設定。
  6 ▼ ★パラメータ設定ここまで 。ここから下をいじるのは内容を理解した上でお願いします!
9-43 ■回数付きループ [ 1 ]回
ピクセル移動の実行開始や実行終了を処理。
この中の処理は、並列実行によるコモンイベントの処理ではなく、
マップイベントからコモンイベントを呼び出した時の処理になります。
そのため、実行開始、または実行終了を処理したあとに【イベント処理中断】を実行して、
呼び出し元のマップイベントに処理を戻すようにしています。
  10 ▼ これは「呼び出し」されたときの処理で起動条件のオンオフを行う 。並列時は通らない
  11-19 ■条件分岐(変数): 【1】 CSelf0[モード] が 1 と同じ
ピクセル移動を起動する場合は分岐。
    13 ▼ ピクセル移動ONにする
    14 セルフ[0]に「0」を設定し、1回だけ実行するようにする。
    15-16 ▼ 仲間を主人公の場所へ移動
後続の仲間を全て先頭の主人公の所に集合させる。
    17-18 ▼ 並列実行開始
セルフ[99]に「1」を代入し、このコモンイベントの並列実行を実行させます。
    19 【イベント処理中断】で呼び出し元のマップイベントに処理を戻す。
  21-39 ◇分岐: 【2】 [ CSelf0[モード] が -1 と同じ ]の場合↓
ピクセル移動を終了させる場合は分岐。
    22 ▼ OFFにする 主人公のピクセル移動XYを0リセット
    23 セルフ[0]に「0」を設定し、1回だけ実行するようにする。
    24-26 ▼ 通常移動を可能にし、主人公の状態を元に戻す
通常通りに主人公の行動ができるようにする。
    27-33 ▼ Ver3.10でエフェクトに変更↓
強制的に移動アニメが実行し続ける状態をOFFにします。
    34-35 ▼ 仲間を主人公の場所へ移動
後続の仲間を全て先頭の主人公の所に集合させる。
    36-41 ▼ ピクセル補正値を0に戻す
▼ 戻さないと予想外のところで引っかかったり1マス幅のところが通り抜けられなくなったりします
変数呼び出し値を使って、主人公のピクセル単位の表示位置の補正を「0」にして、
マスの中心に表示されるように設定。
    42-43 ▼ 並列実行を終了
セルフ[99]に「0」を代入し、このコモンイベントの並列実行を停止させます。
    44 【イベント処理中断】で呼び出し元のマップイベントに処理を戻す。
49 ▼ ここからキー入力に応じたピクセル移動の挙動を処理します
50-283 ■条件分岐(変数): 【1】 Sys13:イベント実行中?(1=ON) が 0 と同じ
イベント実行中では無い時に分岐し、ピクセル移動を処理。
  52-53 ▼ キーによる通常移動を禁止し、コモンイベント内の「ピクセル移動」コマンドだけでキャラを動かします
方向キーを押しても主人公が移動しないように設定。
  54-56 ▼ 押し続けた方向に加速する
▼ 上下キー判定
  57-58 セルフ[13][14]セルフ[95]を代入。
  59-63 ■条件分岐(変数): 【1】 CSelf20[上下方向キー] が 8 と同じ
上キーを押している場合は分岐。
    61-63 ▼ 上
セルフ[12]に1フレームの加速量を減算し、セルフ[12]が最高速度以下になるように補正。
  65-68 ◇分岐: 【2】 [ CSelf20[上下方向キー] が 2 と同じ ]の場合↓
下キーを押している場合は分岐。
    66-68 ▼ 下
セルフ[12]に1フレームの加速量を加算し、セルフ[12]が最高速度以下になるように補正。
  70-74 ◇上記以外
上下キーを押していない場合は分岐。
    71-74 ▼ 速度中和
1フレームごとに縦の移動速度を徐々に下げる。
  77 ▼ 左右キー判定
  79-83 ■条件分岐(変数): 【1】 CSelf21[左右方向キー] が 4 と同じ
左キーを押している場合は分岐。
    81-83 ▼ 左
セルフ[11]に1フレームの加速量を減算し、セルフ[11]が最高速度以下になるように補正。
  85-88 ◇分岐: 【2】 [ CSelf21[左右方向キー] が 6 と同じ ]の場合↓
右キーを押している場合は分岐。
    86-88 ▼ 右
セルフ[11]に1フレームの加速量を加算し、セルフ[11]が最高速度以下になるように補正。
  90-94 ◇上記以外
左右キーを押していない場合は分岐。
    91-94 ▼ 速度中和
1フレームごとに横の移動速度を徐々に下げる。
  97-99 ▼ 「余り値」に速度を加算
セルフ[15〜16]セルフ[11〜12]の値(現フレームの移動量)を加算。
  100-101 ▼ 余り値が10以上になってたら移動
セルフ[10]に主人公のピクセル単位のX表示位置の補正に使う「変数呼び出し値」を設定。
  102-103 セルフ[17〜18]に「0」を設定。
このセルフ[17〜18]には、移動するピクセル量を設定します。
  104-108 ■条件分岐(変数): 【1】 CSelf15[内部余り値X[1/10]] が 10 以上
右に移動させる場合は分岐。(10=右に1ピクセル移動)
    106 セルフ[17]に今回の移動量を設定。
    107-108 ▼ 移動した分、余り値から引く
セルフ[15]に「9以下」の値が残るようにする。
  110-113 ◇分岐: 【2】 [ CSelf15[内部余り値X[1/10]] が -10 以下 ]の場合↓
左に移動させる場合は分岐。(-10=左に1ピクセル移動)
    111 セルフ[17]に今回の移動量を設定。
    112-113 ▼ 移動した分、余り値から引く
セルフ[15]に「-9以上」の値が残るようにする。
  116 セルフ[10]に主人公のピクセル単位のY表示位置の補正に使う「変数呼び出し値」を設定。
  117-121 ■条件分岐(変数): 【1】 CSelf16[内部余り値Y[1/10]] が 10 以上
下に移動させる場合は分岐。(10=下に1ピクセル移動)
    119 セルフ[18]に今回の移動量を設定。
    120-121 ▼ 移動した分、余り値から引く
セルフ[16]に「9以下」の値が残るようにする。
  123-126 ◇分岐: 【2】 [ CSelf16[内部余り値Y[1/10]] が -10 以下 ]の場合↓
上に移動させる場合は分岐。(-10=上に1ピクセル移動)
    124 セルフ[18]に今回の移動量を設定。
    125-126 ▼ 移動した分、余り値から引く
セルフ[16]に「-9以上」の値が残るようにする。
  129-130 ▼ 移動
【キャラエフェクト】を使って主人公のピクセル表示位置を移動。
  131-135 ■回数付きループ [ 0 ]回
デバッグ用の設定です。
現在の移動速度を確認する場合は、ループ回数を「1回」に変えてください。
  136-256 ■回数付きループ [ 1 ]回
押している方向キーに合わせて主人公の向きを変える処理を実行。
    137-138 ▼ プレイヤーの向きを指定。何もないと「システム側の移動方向を向く」が、
▼ ここの処理で「押したキー方向」を反映するようにしている
    139-140 向き固定を実行し、システム側が勝手に向きを変えてしまう状態を防ぐ。
    141-142 ▼ 方向
セルフ[10]に主人公の向きを操作する「変数呼び出し値」を設定。
    143-163 ■条件分岐(変数): 【1】 CSelf20[上下方向キー] が 0 と同じ
上下キーを押していない場合は分岐。
      145-149 ■条件分岐(変数): 【1】 CSelf21[左右方向キー] が 0 と同じ
左右キーを押していない場合は分岐。
        147-154 ▼ 停止
上下左右で何も押されていないので、移動アニメを停止。
      156-165 ◇分岐: 【2】 [ CSelf21[左右方向キー] が 4 と同じ ]の場合↓
左キーを押している場合は分岐。
        157-165 ▼ 左
左向きにして、移動アニメを強制実行。
      167-176 ◇分岐: 【3】 [ CSelf21[左右方向キー] が 6 と同じ ]の場合↓
右キーを押している場合は分岐。
        168-176 ▼ 右
右向きにして、移動アニメを強制実行。
    180-215 ◇分岐: 【2】 [ CSelf20[上下方向キー] が 8 と同じ ]の場合↓
上キーを押している場合は分岐。
      181-191 ■条件分岐(変数): 【1】 CSelf21[左右方向キー] が 0 と同じ
左右キーを押していない場合は分岐。
        183-191 ▼ 上
上向きにして、移動アニメを強制実行。
      193-202 ◇分岐: 【2】 [ CSelf21[左右方向キー] が 4 と同じ ]の場合↓
上キーと共に左キーも押している場合は分岐。
        194-202 ▼ 左上
左上向きにして、移動アニメを強制実行。
      204-213 ◇分岐: 【3】 [ CSelf21[左右方向キー] が 6 と同じ ]の場合↓
上キーと共に右キーも押している場合は分岐。
        205-213 ▼ 右上
右上向きにして、移動アニメを強制実行。
    217-252 ◇分岐: 【3】 [ CSelf20[上下方向キー] が 2 と同じ ]の場合↓
下キーを押している場合は分岐。
      218-228 ■条件分岐(変数): 【1】 CSelf21[左右方向キー] が 0 と同じ
左右キーを押していない場合は分岐。
        220-228 ▼ 下
下向きにして、移動アニメを強制実行。
      230-239 ◇分岐: 【2】 [ CSelf21[左右方向キー] が 4 と同じ ]の場合↓
下キーと共に左キーも押している場合は分岐。
        231-239 ▼ 左下
左下向きにして、移動アニメを強制実行。
      241-250 ◇分岐: 【3】 [ CSelf21[左右方向キー] が 6 と同じ ]の場合↓
下キーと共に右キーも押している場合は分岐。
        242-250 ▼ 右下
右下向きにして、移動アニメを強制実行。
258-276 ◇上記以外
イベント実行中の場合は分岐し、徐々に速度を落としながらピクセル移動を停止させる。
  259-260 ▼ こちらは「イベント中」。時間経過で速度を中和していく。
▼ (一瞬で終わるイベントなら減速させないため)
  261-266 ■条件分岐(変数): 【1】 CSelf98[向き固定中] が 1 と同じ
イベント実行を開始した直後の場合は分岐。
    263-271 向き固定を解除し、移動アニメの強制実行を解除。
  274-281 ▼ X速度中和
徐々に移動速度の数値を下げます。
ここでは移動速度の数値を下げるだけ(変数の値を減らすだけ)になるため、
主人公の移動自体は停止した状態になります。
一気に変数の値を「0」にしない理由は「プレイヤー接触+すり抜け」のマップイベントの実行時に、
ウェイト:1フレーム」程度を実行しただけで移動速度が「0」にならないようにするためです。


▲トップへ戻る▲



◎関連ページ

◆「基本システム」って何?
┣◆コモンイベントの一覧と補足説明
┣◆メニュー画面の処理構造
┗◆戦闘処理の処理構造

◆ボスキャラを作る
◆エンカウントで敵を出現

◆基本戦闘のBGMを変更
◆[戦闘改造]全ての敵キャラを強くする

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