使用するAsset
- TopDownEngine
- 2D Pixel Unit Maker
前提として
今回の記事はTopDownEngineと2D Pixel Unit Makerの2つのアセットが必要なります。
ただし、2D Pixel Unit Makerがなくても他の2Dキャラクターアセットも同様のことを行えばモデル変更は簡単に出来るため参考にしてみてください。
モデルを変更する
TopDownEngineの最小モデルである”MinimalCharacter2D”を
2D Pixel Unit Makerのサンプルにある”0_Kight”に変更する方法になります。
MinimalCharacter2Dのプレハブに”0_Kight”を入れる
#これから変更するMinimalCharacter2Dを”MinimalCharacter2DtoKight”とします。
MinimalCharacter2DtoKightのプレハブの中に
SPUM->RetroUnitPrefabs->0_TeamOriginal にある”0_Kight”を格納します。
そうすると以下のようになるはず。
“MinimalCharacterModel”は不要なので削除するか非活性状態にしましょう。
そうすると”0_Kight”だけが画面上に残るようになります。
CharacterスクリプトのCharacterModelを設定する
CharacterスクリプトのCharacterModelを見ると変更前の”MinimalCharacterModel”になっているため、”0_Kight”に変更する必要があります。
変更するとCharacterModelが”0_Kight”に変わります。
変更したモデルを動かしてみる
TopDownEngineのデフォルトだと
Managers->LevelManagerオブジェクトに”LevelManager”スクリプトが設定されています。
その中の”PlayerPrefabs”が実行するときに動かせるプレイヤーモデルなので、今回作った”MinimalCharacter2DtoKight”を設定します。
実行してみると、設定した”0_Kight”のモデルでキャラクターが動かせます。
ただし、アニメーションやキャラクタの向きなど修正してないため違和感はいろいろあると思います。
続いて、既存のアニメーションから2D Pixel Unit Makerのアニメーションに変更する方法になります。
2D Pixel Unit Makerのアニメーションに変更する
2D Pixel Unit Makerのアニメーションの格納場所を確認する
特に格納場所を指定しない場合は以下のようにSPUM->Res->Animation->Clipの配下にアニメーションクリップが格納されています。
“MinimalCharacter2DtoKight”にアニメーションを設定する
元としたMinimalCharacter2Dにはアニメーションが設定されていないため、アニメーションを設定する必要があります。TopDownEngineにある”Koala”のアニメーションを使いたいと思います。
“Koala”プレハブを選択し、Modelの中あるにAnimator”KoalaAnimatorController”をコピーして”KoalaAnimatorController2DtoKight”を新しく作成します。
作成した”KoalaAnimatorController2DtoKight”を”MinimalCharacter2DtoKight”のアニメーションに設定します。
KoalaAnimatorController2DtoKightのアニメーションを設定する
“KoalaAnimatorController2DtoKight”を開くと以下のように各ステータスごとに状態が設定されています。いろいろとやりたいことは多いですが、今回は”Idle”と”Walking”のみ変更しようと思います。
元とした”Koala”のアニメーターのため、Idleを確認するとMotionが”KoalaIdle”になっています。このMotionを変える必要があります。
SPUM->Res->Animation->Clipの配下に格納されている”0_Idle”を”KoalaIdle”の場所に貼り付けます。また同様にアニメーターのWalkingにある”KoalaWalking”を”1_Run”に貼り付けます。
MinimalCharacter2DtoKightのモデルにアニメーターを設定する
アニメーターの準備が出来ましたが、まだModelにアニメーターを設定していません。
“MinimalCharacter2DtoKight”のCharacterスクリプトを見ると”Character Animator”が設定されていません。
# 元としたMinimalCharacter2Dにはアニメーションが設定されていないためです。
“0_Kight”配下の”UnitRoot”に設定されているAnimator(KoalaAnimatorController2DtoKight)をCharacterスクリプトの”Character Animator”に設定したいため、”UnitRoot”をDrag&DropでCharacterスクリプトの”Character Animator”に設定します。
上記の状態で動かしてみると、プレイヤーが「動かないとき」、「歩いたとき」で正しくアニメーションが動いている様子が見れます。
# ただし、キャラクターの向きの修正を行っていないため正しい向きで歩いてくれません。
続けて、モデルの向きを進行方向に合わせる修正になります。
進行方向に合わせてモデルの向きを変更する
モデルの向きを確認する
TopDownEngineの2Dキャラクターはデフォルトで”右向き”となっています。
そのため、右向きのキャラクターモデルを流用する場合は特に変更なく移動方向に向かってキャラクタが向きを変更してくれます。
ただし、今回使用しているKightのモデルは左を向いています。そのため、前回Kightを動かしたとき移動方向と反対を向きながら移動していました。左向きのモデルの場合はちょっとだけ修正が必要になります。
モデルの向きを決定する”Flip”を調整する
“CharacterOrientation2D”スクリプトの中に”ModelFlipValue Left/Right” があります。
デフォルトだとLeft:X=-1、Right:X=1となっています。
この値はモデルが右向きの場合の設定になるため、左向きの場合は逆転させる必要があります。
Left:X=1、Right:X=-1にしてみてください。
移動方向に合わせてキャラクターの向きが変わる
“ModelFlipValue Left/Right”を修正した状態で動かすと以下のようになります。
ちゃんと移動方向に沿ってキャラクターの向きが変わっていることが分かります。
まとめ
今回はTopDownEngineのモデルを2D Pixel Unit Makerのモデルに変更する方法を紹介しました。
今回は2D Pixel Unit MakerのモデルをTopDown Engineに適応する方法になりますが、
他のアセットでも同様の対応が必要になります。そのため
- モデルを設定する
- アニメーションを変更する
- (必要があれば)モデルの向きを変更する
上記3つをやればどの2Dアセットでも同様に設定することができます。
いろいろな場面で今回の対応が必要になるのでぜひ、やり方を覚えて行っていただけると今後の開発が楽になると思います。
コメント