りよねこたわ~

ロールプレイングゲーム作ってみたいにゃ~でもどうしたらいいのにゃ~?

キャラクターの向きでイベントを起こすにゃ~

ω・`) 13枚目のマップとイベントを作成中にゃ~。

っ´ーωー`)っ なかなか思うように進まにゃいにゃ~。

ここのマップも、マップとイベントが複雑なんにゃ~。

 

ω・`) 今日はキャラクターの向きでイベントを起こすことを考えてみるにゃ~。

普通に考えると、イベントエディタのイベントコマンドに、条件分岐っていうのがあって、「プレイヤーの向きが下を向いている」場合の処理なんかを登録できるんにゃ~。

f:id:riyoneko:20180314170644j:plain

あとは、イベントのトリガーを「プレイヤーから接触」にでもすれば、プレイヤーから接触したときに、下を向いていればイベントを実行させることができるにゃ~。

 

ただこれだけだと、その場で向きを変えた場合とか、右からイベントに接触するとか、思うようにイベントが起動しないこともあるんにゃ~。

 

ω・`)b というわけで、考えたのがこれにゃ~。

まずイベントページ1枚目で、イベントに接触した場合の処理を行うにゃ~。

ここでは、セルフスイッチBをONにしてるにゃ~。

f:id:riyoneko:20180314172133j:plain

イベントページ3が、セルフスイッチBがONのときに出現するイベントになってるにゃ~。

 

イベントページ2では、セルフスイッチAがONのときにイベントを出現させて、さらに並列処理にしているにゃ~。

f:id:riyoneko:20180314172444j:plain

ここはあとから使うからとりあえず次にいくにゃ~。

 

イベントページ3では、セルフスイッチBがONになったときにこのイベントが出現するようにしてるにゃ~。

トリガーを並列処理にすることで、このイベントを周期的に処理するにゃ~。

f:id:riyoneko:20180314172818j:plain

つまり、下を向いているときは、セルフスイッチCをONにして、セルフスイッチBをOFFにしてるにゃ~。

下以外を向いているときは何もしないにゃ~。

 

イベントページ4で、セルフスイッチCがONになったときに実行する処理を登録するにゃ~。

f:id:riyoneko:20180314173156j:plain

セルフスイッチAをON、CをOFFにすることで、イベントが終了した後、イベントページ2の何もしない処理をしてるにゃ~。

 

つまりこの処理は、下を向いたときにイベントを実行する処理を表しているにゃ~。

その場で右を向いてから下を向いても実行されるところがいいところにゃ~。

 

欠点は、この1つのイベントで、イベントページ3(セルフスイッチB)をOFFにできないことかにゃ~?

例えば、このイベントに上から接触(イベントページ1を実行)してイベントを実行(イベントページ3、4、2を実行)したとするにゃ~。

その後、右を向いて(イベントページ2、3を実行)、イベントの右側に移動したとするにゃ~。

そうすると、セルフスイッチBがONになったままになるんにゃ~。

つまり、どこでも下を向くとイベントが実行されてしまうにゃ~。

 

これを防ぐために、イベントの4方向にセルフスイッチBをOFFにするスクリプトを置いておく必要があるにゃ~。

key = [1, 13, "B"];

$gameSelfSwitches.setValue(key, false);

こんな感じのスクリプトかにゃ~?

keyで表されている、1はマップID、13はイベントID、Bはセルフスイッチにゃ~。

それを、$gameSelfSwitches.setValueで、OFF(false)にするってことにゃ~。

 

ω・`) もっと簡単な方法ないかにゃ~?