ミニライツアウト
少し前に作ったギミックのソースコードを紹介します。
トリガーエディター1つで出来て省コスト!
レバーを操作して、
おじさん3人が同時に動いた状態にすることができたらクリアとなります。
ただし、レバーを動かした位置に対応するおじさんと、その隣のおじさんの動きが
「動いてたら止まる」「止まってたら動き出す」という法則で変化するので
ガチャガチャやってもクリアできませんよ!
全体像はこんな感じです。
おじさんの動き反転を使いまわして省スペース化するのがミソです。
※追記:画像は、startが開始位置になっていません!正しくはstartから開始です
以下、細かく見ていきます。
このステートから開始です。初期設定をしています。
(On Enterに別のギミック用の設定を入れ込んでいたので消しました。
気にしないで下さい。)
ワインおじさんを3体並べていますが、全員動かない状態から始めると
真ん中のレバーを押しただけで終わってしまうので
両端のワインおじさんを動かして置き、クリアに数手かかるようにしています。
店舗用ガラス自動ドア、および金庫入り口は、クリア時に開くドアになります。
クリア前は当然閉まっているべきなのでOFFにします。
また、このステートがレバー操作の待ち受けステートになります。
レバーは3つ置いてあり、何れかのレバーがONになったら次のステートに移動します。
なお、レバーはONによって次のステートに飛べればいいだけなので、
レバー自体は即OFFに戻しています。
これは、左のレバーがONになったときに飛んでくるステートです。
257001は一番左のワインおじさんです。
おじさんがOFFならONに、おじさんがONならOFFにし、
次のステートにいきます。
続けて、真ん中のワイン(257002)おじさんがOFFならONに、
ONならOFFにします。
newState7(正解判定)に飛びます。
※newState4はありません
というかそもそもnewStateとかじゃなくてちゃんと名前つけろよっていう・・・
こちらは、一番右のレバーが押されたときに飛んでくるステートです。
一番右のおじさん(257003)がOFFならONに、ONならOFFにします。
newState3に飛びます。
newState3は前述の通り、真ん中のおじさんの動きを反転するステートです。
こちらは、真ん中のレバーを操作したときに飛んでくるステートです。
右のおじさんの動きを反転させています。
その後、newState2(=左のおじさんの動きを反転)に飛びます。
ここまでをまとめると、
左のレバーを押したら、左のおじさん→真ん中のおじさんの動きを反転。
右のレバーをおしたら、右→真ん中のおじさんを反転。
まんなかのレバーを押したら、右→左→真ん中のおじさんの動きを反転。
この時、
左→真ん中
右→真ん中 の真ん中部分と、
左→真ん中
右→左→真ん中 の左→真ん中部分はまったく同じなので、使いまわすことができます。
各おじさん動き反転処理後、newState7に飛びます。
これは正解判定処理になります
左のおじさんは動いているか?動いていたらnewState8へ
動いていなかったらnewState1へ(レバー待ち受けへ)
真ん中のおじさんは動いているか?
右のおじさんは動いているか?
見事、すべてのおじさんが動いていたら正解処理です。
ドアを開けて、
全てのおじさんの動きをいったんOFFにします。
その後startへ。初期状態に戻して次の人が遊べるようにします。
ちなみにこの時はドアオープンのタイマーを作っていなかったので、
通れなくはありませんがドアが割とすぐ閉じてしまいますw
空きスペースに多少のタイマーを仕込んでもよかったかもしれません。
ちなみに、ドアを2個隣接しておくと
手動でこじ開けようとしても奥のドアが選択できずに開けることができません。
なので正解するまで先に進めない仕組みとなります。
ドア2個置き、おすすめです!
長々と解説しましたが、参考になりましたでしょうか?
丸パクリで同じものを実装していただいてもかまいませんので、
是非遊んでみてくださいね!