Corgi Engineを一週間使ってみたので、分かった範囲で書いていきたいと思います
Corgi Engine(https://assetstore.unity.com/packages/templates/systems/corgi-engine-2d-2-5d-platformer-26617?locale=ja-JP)
Corgi Engineは2Dのプラットフォーマーのテンプレートで昔のマリオみたいなゲームが作れます。アングリーバードみたいな物理演算ゴリゴリなのを作るのには向いてません
どういった風に自分のゲームに組み込むかですが、一週間使ってみてこんな感じがよさそうです
- Corgi Engineの機能を理解し、それに沿ったゲームデザインにしたゲーム→Corgi Engineをそのまま使う
- プロトタイプ、短期間で作るゲーム、少しだけカスタマイズが必要なゲーム→Corgi Engineをカスタマイズする
- 長期間かけて作るゲーム→Corgi Engineのソースコードを流用して自分で作る
なぜ、3はソースコードの流用がいいのかというと、大幅なカスタマイズをするとコードの整合性を保つのが難しいので、ブラックボックスをなるべくなくして扱える範囲でやった方がいいです
公式のドキュメントがあります。
https://corgi-engine-docs.moremountains.com/
英語ですが基本的な内容はあるので、わからなくなったらみると解決したりしなかったりします。Youtube動画もあります。なぜか音が小さいです
ここをみて解決しなかったら、Googleにきいたり、それでもわからなかったらCorgi Engineのソースコードをみましょう
#Corgi Engineで遊ぼう
まずは、遊んでみてどういったことができるかを知っておきましょう
Corgi Engine/ Common/ Scenes/ SplashScree.unity
このシーンを実行するとはじめから遊べます
普通の2Dやドット絵、3Dのステージ、また機能を説明するために最低限の要素で構成されたMinimalステージもあります
操作方法は公式ドキュメントのここにかいてあります
https://corgi-engine-docs.moremountains.com/input.html
移動:W,A,S,D(W,Sは上向いたり、下向いたりする)
ジャンプ:Space
走る:Sift
ダッシュ:F
ショット:E
#キャラを作ってみる
正方形をプレイアブルキャラクターにしていきます
その前にシーンを用意します
CorgiEngine/ Demos/ Minimal/ MinimalLevel.unity
最低限のステージ(Level)が用意されているシーンです。GameManagersやLevelManagerなどがあらかじめ含まれています。実行するとこんな感じのです
これを複製して、変更していきましょう。まず、正方形(ツールバーからAssets>Create>Sprites>Square)をシーンに配置します
この正方形のGameObjectにAdd ComponentでCharacterを追加します。
インスペクターにあるCharacterコンポーネントに"AutoBuild Player Character"とかいたボタンがあるので押すと自動的に必要なコンポーネントの追加やタグ、レイヤーが変更され、操作できるようになります。
追加されたコンポーネントをいじって簡単に挙動を変えれます。例えば、ジャンプの上限を5回に変更したときは、CharacterJumpコンポーネントのNumber Of Jumpsを5にするだけです
このままでも操作はできますが、ちゃんと管理できるようにLevelManagerに登録します。先ほど作成した正方形のゲームオブジェクトをPrefab化します。シーンに配置されているLevelManagerのPlayer PrefabsのSizeを1として、Element 0に正方形のPrefabを付けます
足場を作る場合はCollider2Dをつけて、レイヤーをPlatforms、下から通れるようにしたいならOneWayPlatformsにします
他にも機能が用意されています。CorgiEnigine/Demosの中からその機能が使われているシーンを探して真似すればできます
#カスタマイズ
私はCorgi Engineのソースコードを直接いじってファイルの位置を変えたらプロジェクトが2回壊れたので直接いじらないようにしています。公式の動画でもその方がいいといってました
Corgi Engineのコードはプロパティとメソッドにほとんどprotectedやvirtualがついているので継承で書き換えられます
ただし、CharacterJumpやCharacterRunといったクラスを継承してキャラクターにアタッチしてもうまく動きません。CharacterJumpやCharacterRunなどはCharacterAbilityを継承しています。これらを他のクラスから取得するためにCharacterクラスにFindAbility()が定義されています。FindAbility()は指定したクラスとまったく同じクラスのコンポーネントしか取得しないので、子クラスのコンポーネントをつけていても取得できないため正常に動作しなくなります。アクション時に音やエフェクトを追加したいなら、Corgi Engineには独自のイベント機能があるのでそれを使ってアクション時に実行させることが可能です
#まとめ
Corgi Engineは楽しいのでぜひ使ってみてください