【TopDown Engine】ドアを開ける動作について

ドアの前にキャラクタがいる画面 TopDownEngine
スポンサーリンク

前書き

TopDown Engineには「ある範囲に入った時に特定のボタン(Space)を押すことでイベントを実行する」処理がすでに組まれています。この処理を使うことでドアを開けたり、宝箱を開けたりといったアクション動作を簡単に実装することができます。今回はそのような「ドアを開ける動作」について紹介していこうと思います。

Demoを動かしてみる

Demoの場所

いつものごとく、Demoを動かしてみましょう。
今回は”MinimalSandbox2D“を開いてみてください。

MinimalSandbox2Dの格納場所

ドアを開けてみる

いろいろなドアがありますが一番シンプルな鍵が必要ないドアを開けてみましょう。
一定の範囲に入るとドアの頭上に”A”の文字が出力され、その状態でSpaceボタンを押すとドアが開くようになります。

MinimalSandbox2Dの実行時の画面

ドアの作りについて

ドアの構成

ドアの作りを見ると大きく分けて

  • ドアが開いたときの絵(DungeonDoors_OpenTop/DungeonDoors_OpenBottom)
  • ドアが閉まった時の絵(DungeonDoors_ClosedDoor1)
  • ドアを開く動作を受け付けるColliderの範囲(KoalaWoodenDoor)
  • ドアが閉まっているときのColliderの範囲(DungeonDoors_ClosedDoor1)
  • ドアを動かしたときのFeedbacks(ActivationFeedbacks/ErrorFeedback)

に分かれています。

MinimalSandbox2DのDoorのHierarchy

ドアを開く動作を受け付けるColliderの範囲(KoalaWoodenDoor)

ドアにはColliderが2つ付与しており、外側のColliderが「ドアを開くことができる範囲」になります。
この領域にプレイヤーが入ることで”A”の文字が出現します。

Doorのコライダー

プレイヤーが外側のColliderに入ると以下のようになります。

Doorのコライダーにプレイヤーが入ったとき

上記の状態でSpaceボタンを開くことでドアを開くことが可能です。
この

  • “A”の文字を表示させる
  • “A”の文字が表示されているときにSpaceボタンを押したときドアを開ける

といった処理を実行しているのは”KeyOperatedZone“コンポーネントになっています。

KeyOperatedZoneの一部抜粋

  • Colliderコンポーネントがあるオブジェクトと同じ階層に
    KeyOperatoedZoneコンポーネントを設定する必要があります。
  • Visual Promptで領域に入った場合に表示する文字を出力しています。
  • Key Actionの部分でドアが開くEventを実行しています。
    今回は鍵が必要ないドアのため、Requires Keyはfalse(鍵を使わない)設定になっています。
  • ドアを開いたとき、閉じた時でFeedbacksを設定し、音を出すことが可能です。
KeyOperatedZoneコンポーネントの一部

ドアが閉まっているときのColliderの範囲(DungeonDoors_ClosedDoor1)

内側のColliderが「ドアが閉まっているときの領域」になります。
この領域は壁と同じLayerになっており、この領域がある限りはプレイヤーが通れない状態になっています。そのため、ドアを閉めている場合は通れない状態を作り出しています。

Doorのコライダー範囲

ドアを開けると以下のようになります。内側のColliderがなくなりプレイヤーが通れるようになります。
“KoalaWoodenDoor”のイベントを実行することで、”DungeonDoors_ClosedDoor1″のオブジェクトが非活性になり、合わせて内側のColliderが非活性になる動きをしています。

DoorOpen時のコライダーの非活性状態

まとめ

今回はドアの開き方(合わせて、KeyOperatedZone)について紹介しました。

今回紹介した機能はドアの開き方についての紹介になりますが、この機能を拡張することで

  • プレイヤーが指定の範囲に入ったら自動でイベントを実行する
  • プレイヤーが指定の範囲にいる間はイベントを実行する

といった機能を実装することができます。

上記のような処理が実装されたPrefabだったり、コンポーネントがTopDown EngineのDemoにあったりするため、まずはDemoをいろいろ見てなければ自作するのがいいかなと思います。

コメント

タイトルとURLをコピーしました