前書き
TopDown Engineを使ってゲームを作るために前回はDemoシーンにオリジナル要素を加える方法について紹介しました。今回はその続きとして「クリア条件」を自分のゲームに合わせてカスタマイズする方法について解説していきます。
ゲームのジャンルやコンセプトによって、クリア条件はさまざまです。
- すべての敵を倒す
- 一定のポイントを取得する
- クリアエリアに入る
など、クリア方法の設定次第でゲーム体験は大きく変わります。
この記事では、TopDown EngineのDemoをカスタマイズしながら自分だけのクリア条件を作る方法を具体的に紹介していきます。
前回の記事はこちらからご覧いただけます。
Demoにあるステージのクリア条件は?
まずはいつも通りTopDown EngineのDemoの作りから見ていきましょう。今回はKoalaDungeonとLoft3Dから見ていこうと思います。
KoalaDungeonの場合
KoalaDungeonの場合は「特定のエリアに入ることでクリアする」タイプになっています。以下のKoalaDungeonChangeLevelというオブジェクトにプレイヤーが触れることでステージクリアになり、Level Selection画面に遷移します。

その時の動画は以下になります。DemoになるためTopDown EngineのLevel Selectionに戻る形になります。
Loft3Dの場合
Loft3Dの場合は「ステージ上にいるすべての敵を倒すことでクリアする」タイプになっています。すべての敵を倒すと「YOU WON」という画面が表示されるようになります。
その時の動画が以下になります。すべての敵を倒して画面上部のENEMIESが”0″になったところでYOU WONの画面が表示されるようになります。
それぞれのクリア条件を確認する。
ではそれぞれのクリア方法の実装を見てみましょう
クリアエリアに入る方法
KoalaDungeonChangeLevelオブジェクトを見てみましょう。そうすると
- BoxCollider2D
- GoToLevelEntoryPoint
の2つのコンポーネントがあります。


それぞれの意味としては
BoxCollider2D:キャラクターが接触したかどうかを判定するための機能
GoToLevelEntoryPoint:キャラクターが接触したら次のLevel(ステージ)に遷移させるために設定する機能
非常にシンプルな仕組みで、エリア侵入によるクリアを実現しています。
すべての敵を倒してクリアする方法
「Loft3D」では、KillsManagerという仕組みが使われています。いままでLoft3DではKillManagerという機能はありませんでしたが2023年10月のThe Mariachiで導入された新しい機能(といってももう1年以上前ですが…)になります。
このKillManagerは特定のLayerMaskをシーン上から読み取り、対象のLayerMaskがシーン上から減るまたは”0″になったらFeedbacksを実行する機能になります。

Kills Manager のパラメータとして大きく分けると3つのパラメータに分かれます。
- どのLayerMaskで設定されたオブジェクトをカウントするか
→赤枠のTarget Layer Mask - 倒したとき、すべて倒したときでどんなEventを実行するか
→On Death 、On Last Death - どのオブジェクトにテキストを表示するか
→Text displays

MinimalScene2Dに敵を倒してクリアする実装を組み込んでみよう
今回はLoft3Dにある敵をすべて倒したらクリアする機能をMinimalScene2Dに組み込んでみます。やることととしては
- Loft3Dにある「KillsManager」と「RemainingEnemiesCounterContainer」をPrefab化する
- MinimalScene2Dに上記Prefabを配置する
- 「KillsManager」と「RemainingEnemiesCounterContainer」の各種パラメータを設定する
- 敵(Enemies)を配置する
- 実行して動作確認する
という感じになります。では早速やっていきましょう。
「KillsManager」と「RemainingEnemiesCounterContainer」をPrefab化
Loft3Dにある「KillsManager」と「RemainingEnemiesCounterContainer」をPrefab化します。Hierarchyにありますので適当なフォルダ(Project)にドラッグ&ドロップをしてPrefabにしましょう。


どこでもいいのですが、分かりやすいようにMinimal2DフォルダにPrefabとして配置しました。

MinimalScene2Dに上記Prefabを設定
Prefabにした「KillsManager」と「RemainingEnemiesCounterContainer」をMinimalScene2Dに配置しましょう。それぞれ配置する場所は以下になります。
- KillsManager
→Managersの下(ただし、KillsManagerの場合はManagersの下以外のどこでも大丈夫です)

- RemainingEnemiesCounterContainer
→Canvasの下
RemainingEnemiesCounterContainerについては必ずCanvasの下に配置するようにしましょう。RemainingEnemiesCounterContainerのLayerはUIですのでKoalaUICameraなどUIを表示するためのCamera下ではないと正しく表示されません。(後々、UI周りの説明もしていこうと思いますが、いまのところCanvasの下じゃないと表示されないんだと思っていただいて大丈夫です)

「KillsManager」と「RemainingEnemiesCounterContainer」の各種パラメータを設定
配置した「KillsManager」と「RemainingEnemiesCounterContainer」のパラメータを設定していきます。
- KillsManager
- Total CounterとRemaining CounterがNoneになっていますのでRemainingEnemiesCounterContainerのTotalCounterとCounterを設定しましょう。
- OnFinalDeathのMMF Player(Feedbacks)のSet ActiveでTarget Game Object がNoneになっているため、PauseSplashを設定しましょう


- RemainingEnemiesCounterContainer
- 正しい位置にRect TransformのPosX、PosYを修正しましょう


敵(Enemies)を配置する
敵(Enemies)を配置しましょう。何でもいいですが必ずLayerがEnemiesである必要があります。自分は前回作った敵キャラを使用していますが、NinjaなどDemoにある敵キャラを使ってもらっても大丈夫です。

実行する
いままでの設定が終わりましたら実行してみましょう。うまくいくと画面上部のENEMIESが配置した敵の数で数字が変わっています。また敵を倒すことで白色の文字が減っていき、すべての敵を倒して”0″にすることでPause画面が開くようになります。
その時の動画が以下になります。数字が減っていき、Pause画面が表示されることが分かりますね。
まとめ
今回はクリア条件の変更について紹介しました。
- 「KoalaDungeon」では、エリア到達でクリアする方式が採用されており、BoxCollider2DとGoToLevelEntryPointのシンプルな組み合わせで実装されています。
- 「Loft3D」では、すべての敵を倒してクリアする方式が採用されており、KillsManagerとRemainingEnemiesCounterContainerを使った仕組みで、クリア達成とUI表示が連動しています。
どちらの方法も、ゲームのジャンルや設計に合わせてカスタマイズすることで、オリジナリティのあるステージクリア演出が可能になります。
クリア条件は、ゲーム体験そのものに直結する重要な要素ですので、プレイスタイルや目指す楽しさに合わせて工夫していきましょう!
次回はBGMの設定について紹介していこうと思います。
コメント