足音に反応して追いかけてくる敵【ウディタ】

2021/11/03

ウディタ ゲーム制作

  今回は、ずっと作りたかった「足音に反応する」敵をやっと作れそうなので、自分が実際に組んでみたコモン・マップイベントを紹介したいと思います!

 実際には足音のSEに反応するのではなく…移動速度に注目しています。

 足音が小さくなる(SE小)=ゆっくり移動している、足音が大きくなる(SE大)=早く移動している…として考えています。

 つまり、このコモンEvでは「主人公がゆっくり移動しているときは反応しない敵」を作っています!

コモンイベントでの処理

 コモンイベントでは、以前作った足音コモンを少し改造しています。改造と言っても大したことはなく、ちょっと付け加えているだけなんですけど👐

移動速度を変更するコモン

 まず、主人公がゆっくり歩く処理のコモンを作ります。

主人公の移動速度を変更するコモン
主人公の移動速度を変更するコモンEv

 めちゃくちゃ簡易的😅主人公のグラフィックを変更する処理が入っていないだけで、基本的には前に紹介したダッシュコモンと同じです。

 作った移動速度を変更するコモンEvに返し値を設定します。今回はCself4に返り値を設定し、「移動速度が0=通常/1=遅い/2=早い」としていきます。なので、主人公の速度を変えた直後に変数操作でCself4をいじっています。

 返し値は『処理終了後、指定したコモンセルフ変数の値を、呼び出し元に返す』ものになっています。

 これの使い方が分かってきたらコモンEvを自作できる幅が広がると思います!自分は今も理解しきってないですけど💥😇

足音コモンの改造

 次に、足音コモンに付け加えをしていきます!付け加える処理は以下のものになります。

付け加える処理

■条件分岐(変数):  【1】 CSelf19[移動した?  yes1]  が   1 と同じ 
-◇分岐: 【1】  [ CSelf19[移動した?  yes1]  が  1 と同じ  ]の場合↓
 |■イベントの挿入[名]: CSelf20[SE  変] = ["速度変更  0=常/1=遅/2=早"] <コモンEv 220> 
 |■条件分岐(変数):  【1】 CSelf20[SE  変]  が   0 と同じ  【2】 CSelf20[SE  変]  が   1 と同じ  【3】 CSelf20[SE  変]  が   2 と同じ 
 |-◇分岐: 【1】  [ CSelf20[SE  変]  が  0 と同じ  ]の場合↓
 | |▼ サウンド再生
 | |■サウンド:SE10「player  足音」(0 チャンネル) 再生  /  遅延:0フレーム
 | |■ウェイト:20 フレーム
 | |■
 |-◇分岐: 【2】  [ CSelf20[SE  変]  が  1 と同じ  ]の場合↓
 | |▼ サウンド再生
 | |■サウンド:SE11「player  足音静」(0 チャンネル) 再生  /  遅延:0フレーム
 | |■ウェイト:20 フレーム
 | |■
 |-◇分岐: 【3】  [ CSelf20[SE  変]  が  2 と同じ  ]の場合↓
 | |▼ サウンド再生
 | |■サウンド:SE12「player  足音大」(0 チャンネル) 再生  /  遅延:0フレーム
 | |■ウェイト:20 フレーム
 | |■
 |◇分岐終了◇
 |■
◇分岐終了◇

 足音コモンのSEを鳴らす直前に、イベント挿入でさっきのコモンEvを挿入し、その結果を足音コモン内のCself変数に代入します。(ここではCself20[SE 変]に代入)

 Cself20[SE 変]で条件分岐を行い、通常スピードのとき(=0のとき)通常時のSEを再生、スピードが遅いとき(=1のとき)また別なSEを再生…として足音を移動スピードによって変更してます。

 この2点のコモンを用意することで、マップ内に敵を作る準備が整いました。

マップイベントでの処理

(更新:2022/03/25)
 以前のマップEvの処理から大きく変わったので新しく書き直しました!

 マップEvで敵になるキャラを設置します。

移動速度で反応する敵イベント
マップ上の敵イベント

 このような感じでマップ上に配置してます。

 具体的にどのように組んでいるのかは以下にまとめます↓

マップ上の敵イベントの具体的な処理内容

<ページ1>
移動ルート 動かない
起動条件=プレイヤー接触 セルフ変数2=0のとき
接触拡張範囲 X=10 Y=10

■イベントの挿入: このEvのセルフ変数1 = コモン220:[ 速度変更  0=常/1=遅/2=早 ]
■イベントの挿入: このEvのセルフ変数0 = コモン218:[ 近づくと起動(0=停/1=起) ]
■条件分岐(変数):  【1】 このEvのセルフ変数1  が   0 と同じ  【2】 このEvのセルフ変数1  が   1 と同じ  【3】 このEvのセルフ変数1  が   2 と同じ 
-◇分岐: 【1】  [ このEvのセルフ変数1  が  0 と同じ  ]の場合↓
 |■条件分岐(変数):  【1】 このEvのセルフ変数0  が   0 と同じ  【2】 このEvのセルフ変数0  が   1 と同じ 
 |-◇分岐: 【1】  [ このEvのセルフ変数0  が  0 と同じ  ]の場合↓
 | |▼ 停止
 | |■動作指定:このイベント / 主人公の逆を向く / ウェイト 5フレーム / 主人公の方を向く / ウェイト 3フレーム / 主人公から離れる
 | |■ウェイト:1 フレーム
 | |■
 |-◇分岐: 【2】  [ このEvのセルフ変数0  が  1 と同じ  ]の場合↓
 | |▼ 起動
 | |■変数操作: このEvのセルフ変数2 = 1 + 0 
 | |■
 |◇分岐終了◇
 |■
-◇分岐: 【2】  [ このEvのセルフ変数1  が  1 と同じ  ]の場合↓
 |▼ 気付かない
 |■
-◇分岐: 【3】  [ このEvのセルフ変数1  が  2 と同じ  ]の場合↓
 |▼ 起動
 |■変数操作: このEvのセルフ変数2 = 1 + 0 
 |■
◇分岐終了◇

<ページ2>
移動ルート カスタム
起動条件=並列実行 セルフ変数2=1のとき
接触拡張範囲 X=8 Y=8

■サウンド:SE ファイル[SE/ghost_ah.wav] 音 30% 周 100% (0 チャンネル) 再生  /  遅延:0フレーム
■イベントの挿入: このEvのセルフ変数0 = コモン218:[ 近づくと起動(0=停/1=起) ]
■条件分岐(変数):  【1】 このEvのセルフ変数0  が   0 と同じ  【2】 このEvのセルフ変数0  が   1 と同じ 
-◇分岐: 【1】  [ このEvのセルフ変数0  が  0 と同じ  ]の場合↓
 |▼ 停止
 |■変数操作: このEvのセルフ変数2 = 0 + 0 
 |■
-◇分岐: 【2】  [ このEvのセルフ変数0  が  1 と同じ  ]の場合↓
 |▼ 起動
 |■
◇分岐終了◇
■イベントの挿入[名]: ["主人公接触"] <コモンEv 225>  / 2:聴覚

<ページ3>
起動条件=決定キーで実行 V5:鍵入手=1以上

処理空欄(特定のアイテムを入手で敵イベント消去のためのページ)

 …となっています!

 これで、普通に歩いた主人公を追いかけてきて、主人公がゆっくり歩くと反応しない敵が作れます!

 まず、ページ1では…

 【速度変更】コモンEv を挿入し、セルフ変数1に結果を代入(結果を返す)して条件分岐で移動速度が通常(=0)、遅い(=1)、早い(=2)で分岐させます。

 その分岐の中で通常の移動速度で歩いた時と早く移動したときにセルフ変数2=1+0と操作し、ページ2(主人公を追いかける処理)に移動します。

 二行目【近づくと起動】のコモンEvで敵の索敵範囲を管理しています。これがある事で、接触範囲から主人公が出たら立ち止まってキョロキョロするとか、ジャンプしてみるとか…そういったことが可能になります。

 【移動速度を変更】の分岐の中に【近づくと起動】を入れています。移動速度を判定した後に、接触範囲内にいるかどうか見ています。もしかすると逆がいいかもしれない…。

 また、停止処理(気づかれてない)の分岐のときに主人公から離れる処理を入れていますが、これは接触範囲に入った時に主人公が動いていなかったり、入った瞬間に移動速度が変化したときにこの分岐が起動するようなので何かとりあえず処理をいれてます。

 【近づくと起動】のコモンEvについて、このコモンEvは主人公のXY座標と呼び出し元(今回はこのマップEv)の拡張範囲XYの差を求めて、範囲に入ったかを確かめるコモンEvになっています。

 自分がこのコモンEvを作るため、参考にさせて頂いたのは【なにものにもとらわれないブログ】様の記事になります!

 ページ2では…

 移動ルートをカスタムにして、主人公に接近するようにしています。

 また、【近づくと起動】のコモンで接触範囲に主人公が居るかを判定し、範囲外に出たら分岐のセルフ変数0=0(停止)の中にセルフ変数2=0+0をいれてページ1に戻ります。

 最後の【接触判定】のコモンは、敵のマップEvの起動条件を並列にしているため、接触したかをマップEvのみでは判定できません。なので新しく「主人公とコモンの呼び出し元のマップEvが接触したか?」を判断するコモンを作って設置しています。

 この【接触判定】コモン内でGAMEOVERの処理もしています。(厳密にはGAMEOVERのコモンに移動して処理を行っている)

 ページ3は特定のアイテムを取るとマップ上から敵Evを消すようにしたかったので、からの状態にしています。

 …以上が足音に反応する敵Ev、もとい「移動速度で反応する敵Ev」になります!

 最後まで読んでいただき、ありがとうございます


profile


MNEET
ゲーム制作を亀並みですがやってます
MNEET(@ごみ)の自創作置き場です
ゲーム制作以外にも自創作関係を投稿していこうと思っています
幅広に創作活動をしていきたい気持ち
よろしくお願いします👐

ゲーム制作や創作以外。日常系という名の自我👇
生活LOG+

MNEETのTwitter👇
垢名【ごみ】  Twitter

作ったゲーム

初完走!第一作目 徘徊者の館
第二作目 ぼく

カテゴリー

このブログを検索

QooQ