前書き
今回はTopDown EngineのDemoにあるKoalaDungeonについて記載していこうと思います。
KoalaDungeonがあるのは分かったけど何がどう動いてるの!?という人に向けた記事になります。
KoalaDungeonを動かしてみる
格納場所
通常は以下のフォルダに”KoalaDungeon“が格納されているためこちらから開けばOKです。
他には”StartScreen”を実行してステージ選択画面からKoalaDungeonを選択して開く方法もありますが、KoalaDungeonがどのように動いているか見たいため、基本的には”KoalaDungeon”から直接開いてください。
KoalaDungeonを動かしてみる
“KoalaDungeon”を開いてさっそく実行ボタンを押して動かしてみましょう
Koalaの操作方法については公式サイトの一番下に記載しています。
Move | arrows |
Jump | space |
Dash | f |
Shoot | left mouse |
Run | left shift |
Crawl | C |
Switch Weapon | T |
Time Control | K |
Reload | R |
Interact | space |
Inventory | I |
Pause | Escape |
KoalaDungeonにある要素について
KoalaDungeonを動かしてみるといろいろな要素があると思います。
- プレイヤーが操作できる
- 敵が自動で攻撃する/敵が一定のルートを移動する
- ダイアログを表示するNPCがいる/鍵付きの扉がある
- ダメージが発生する床がある/落ちる床がある
- 武器やアイテムの取得ができる
- ワープができる
パッと思いつく限りあげると以上の要素がKoalaDungeonの中に詰まっています。
それぞれゲームを作成する上で欠かせない要素ですのでKoalaDungeonではどのように実装しているかを調べていくのがいいかなと思います。
簡単にですが、それぞれの要素について説明していきます。
プレイヤーが操作できる
HierarchyのKoalaのコンポーネントを見てください。
Characterコンポーネントの”Character Type”を見てみると”Player”になっています。
“Player”になっているオブジェクトがプレイヤーとして動かせるオブジェクトになります。
Koalaの状態で上下移動やRun、Dashなど実行できているのはKoalaオブジェクトに設定されているCharacterMovementやCharacterRunコンポーネントが設定されているからです。これらをTopDown Engineとしては”CharacterAbility“と呼んでいます。他にも設定できるコンポーネントがあるため気になる方は公式Documentをご確認ください。
また、Characterコンポーネントの”Character Type”が”AI”になっていると自分で動かすことができません。その代わり”AI Brain”コンポーネントを使って動かすことになります。「AIで~」と表現する場合は大抵この”Character Type”が”AI”になっていることを指します。
敵が自動で攻撃する/敵が一定のルートを移動する
敵が自動で攻撃する
Characterコンポーネントの”Character Type”が”AI”になっていると”AI Brain”コンポーネントを使って動かすことになります。TopDown Engineの場合、コンポーネント単位で動かす処理がすでに準備されています。AIの場合はそのコンポーネントを組み合わせて自動で攻撃したり、プレイヤーを追いかけたりします。
AIの実装方法について簡単にまとめたものがあるため以下もご確認ください。
敵が一定のルートを移動する
Hierarchyにある”KoalaNinjaPatrol“が該当のオブジェクトになります。
KoalaNinjaPatrolにある”MMPath“で移動する場所を指定して、”AIActionMovePatrol2D“でMMPathで指定したルートを通るようになります。
AIActionMovePatrol2Dを実行するタイミングについても”AI Brain”で指定しています。”AI”の場合は全てAI Brainで制御しているため、AIがどのような動きをしているのか理解するにはAI Brainを見てもらうのが手っ取り早いと思います。
ダイアログを表示するNPCがいる/鍵付きの扉がある
ダイアログを表示する場合”DialogueZone“コンポーネントを使用します。このコンポーネントは「指定のColliderの中でSpaceが押された場合にダイアログを表示する」という機能になります。
単純にダイアログを表示するだけなのでCharacterコンポーネントなどなく、ColliderとDialogueZoneだけのシンプルな作りになっています。
DialogueZone以外にも「指定のColliderの中でXXXされた場合に???をする」というコンポーネントが複数あります。例えば鍵がかかった扉を開ける場合に”KeyOperatedZone“を使用します。
KeyOperatedZoneは「指定の鍵を持っている場合に、指定の場所でSpaceを押したら扉を開く」という機能を持ったコンポーネントです。
「指定のColliderの中でXXXされた場合に???をする」といったことがやりたい場合は「XXXZone」コンポーネントを探してみるのがいいかと思います。
ダメージが発生する床がある/落ちる床がある
ダメージが発生する床
ダメージが発生する床の作りは比較的単純で、”DamageOnTouch”コンポーネントとColliderコンポーネントを付けたオブジェクトを準備してAnimatorの動きに合わせてColliderの有効/無効を切り替える作りになっています。
キャラクタが落ちる床
キャラクタが落ちる床(=消える床)の場合は”AppearDisappear“コンポーネントを使用します。
このコンポーネントは時間を指定することで消えている時間、見えている時間などを設定することができます。
武器やアイテムの取得ができる
TopDown Engineの場合”PickableItem“や”ItemPicker“コンポーネントを用いて武器やアイテムのやり取りをしています。これはMore Mountainsが作成したインベントリシステムを使っているためこのようなやり方になっています。少し理解するまで難しいですが、「フィールドに表示されるアイテム」と「インベントリに格納された時のアイテム」を作成する必要があります。
インベントリについては公式DocumentがあるためまずはDocumentを読んでみるのがいいかなと思います。
# 正直、まだ自分もこの機能について理解できていないので理解出来たら記事にまとめたいと思います。
ワープができる
テレポートしたい対象に”Teleporter“コンポーネントを付けることで指定の場所にワープすることができます。ステージを切り替えたり、別の部屋に飛んだりといろいろと応用が利くためぜひ使い方をマスターしていただけたらと思います。
まとめ
今回はKoalaDungeonについて紹介しました。
今回紹介した機能についてもTopDown Engineの中のまだまだ一部の機能になります。他にも“KoalaCinemachineZones“や”KoalaProceduralTilemap“など特定の機能に特化したDemoがあるため、まずは動かしてみてどのような動きをするのか?を実際に触れてみるのが一番いいかなと思います。(ほかのDemoの動きについても今後まとめていきたいと思います)
コメント