のぼるゲーム開発備忘録

ゲーム開発のプログラマーです。ゲーム開発関連、調べた内容をアップしていきます。Unityを使用して個人開発を行っています。

【Unity】【Corgi Engine】プレイヤーモデルの差し替え

f:id:ikeball:20210108203719p:plain

はじめに

Corgi Engineでキャラクターモデルの置き換え手順をまとめました。
日本語の情報は多くないので手探りながらも調べた内容をメモしていきます。
ここではATART Casual Archer Packのモデルを使用していますが、お気に入りのモデルを使用して頂ければと思います。
なるべく既存の仕組みを利用して作成していきたいです。

f:id:ikeball:20210108221638g:plain

使用アセット

Corgi Engine - 2D + 2.5D Platformer
ATART Casual Archer Pack

今回の記事で使用したアーチャーのモデルです。

作業環境

Unity 2019.4.16f1

プレイヤーモデルの差し替え

デモシーンのコピー

Corgi Engine - 2D + 2.5D Platformer と ATART Casual Archer Packをインポートした状態から更新していきます。
3Dのモデルを使用しますのでイメージに近いCorgiEngine/Demos/Corgi3D/NewCorgi3Dを変更していきたいと思います。
NewCorgi3DシーンをコピーしArcherと名前を変更しました。

f:id:ikeball:20210108204136p:plain

シーン側プレイヤープレハブの変更

Archerシーンを開き、HierarchyのLevelManagerを選択します。
Corgi EngineではLevelManagerがシーン初期化処理を行っています。
パラメータのPlayer PrefabsNewCorgi3D (Character)をクリックします。
Player Prefabsに設定されたキャラクターが操作キャラクターとなります。
マルチプレイも考慮されているため配列の型となっています。

f:id:ikeball:20210108205513p:plain

NewCorgi3DのプレハブをコピーしArcherと名前を変更します。

f:id:ikeball:20210108205809p:plain

コピーしたArcherプレハブをドラッグし、LevelManagerのPlayer Prefabsに設定します。
これでArcherプレハブを変更すれば、プレイヤーが変更されるようになりました。

f:id:ikeball:20210108210004p:plain

プレイヤープレハブにモデル追加

コピーしたArcherプレハブをダブルクリックしプレハブの中を確認します。
沢山のオブジェクトが入っていて「ぐはっ」とは思いましたが確認したところ、今回関係しそうなオブジェクトは2つしかありません。 ノードの一番上にあるArcherと対象のモデルのNewCorgi@T-Poseを今回は更新していきます。
他は移動時のパーティクルや演出に使用したり、カメラのターゲット用のオブジェクトでモデルの変更には関係ありません。

f:id:ikeball:20210108210445p:plain

用意したモデル(Animator付きのプレハブ)をArcherプレハブのNesterに配置します。 ATART Casual Archer Packを使用されている方はATART/Archer/Prefabs/PlayerFemaleを配置します。

f:id:ikeball:20210108211353p:plain

NewCorgi@T-Poseの設定を確認するとPosition, Rotation, Scaleが調整されています。

f:id:ikeball:20210108211517p:plain

用意されていたキツネさんと同じ位置、向き、サイズとなるように調整しました。
ちょっと怖いですがモデルが同じくらいの感じになれば良いと思います。

f:id:ikeball:20210108211841p:plain

AnimationController/CharacterControllerの設定

NewCorgi@T-PoseのAnimatorに設定されているAnimationControllerの仕組みを使えば アニメーションを置き換えるだけで動くはずですのでこちらを流用していきます。 NewCorgi@T-PoseのAnimatorをクリックし、Animator/ControllerのNewCorgi3DAnimatorContorollerをクリックしてください。

f:id:ikeball:20210108212924p:plain

NewCorgi3DAnimatorContorollerをコピーしてArcherAnimatorContorollerと名前を変更しました。

f:id:ikeball:20210108213438p:plain

新しく追加したモデルのAnimatorにArcherAnimatorContorollerを設定します。

f:id:ikeball:20210108213647p:plain

ノードトップのArcherを選択し、InspectorからCharacterのAnimatorに、PlayerFemaleをドラッグし設定します。
コンポーネントはたくさんついているのでスクロールさせる必要があります。確認した環境では上から5番目にありました。
Corgi EngineではこのトップにあるCharacterや一緒についているコンポーネントを触ることでパラメータや動きを変更できます。

f:id:ikeball:20210108213841p:plain

元からあったNewCorgi@T-Poseを非表示にします。
削除しても問題ありませんが動くの確認するまでは、設定の違いを確認するために非表示で置いておくのも良いと考えています。

f:id:ikeball:20210108214646p:plain

Animatorの更新

最後の項目になります。このAnimatorの更新が終われば設定は完了となります。
あと少しです!

Animatorを開く

PlayerFemaleからArcherAnimatorControllerをクリックします。 Animatorウィンドウを開いていない場合は「Unityメニュー→Window→Animation→Animator」から開けます。

f:id:ikeball:20210108215201p:plain

こう言うのが出てきます。

f:id:ikeball:20210108215432p:plain

NewCorgi3DAnimatorControllerの構成

変更前の設定を確認したところNewCorgi3DAnimatorControllerの実装は16モーションで構成されていました。

  • Idle...立ち待機
    f:id:ikeball:20210108121042g:plain
  • LookingUp...見上げる
    f:id:ikeball:20210108122214g:plain
  • Walking...歩き
    f:id:ikeball:20210108121259g:plain
  • Running...走り
    f:id:ikeball:20210108121446g:plain
  • Crouching...しゃがみ
    f:id:ikeball:20210108121955g:plain
  • Crawling...しゃがみ歩き
    f:id:ikeball:20210108121648g:plain
  • Dangling...不安定な足場から落ちそう
    f:id:ikeball:20210108122445g:plain
  • Pushing...押す
    f:id:ikeball:20210108174308g:plain
  • Landing...着地
    f:id:ikeball:20210108174134g:plain
  • ClimbingLadderIdle...梯子つかまり待機
    f:id:ikeball:20210108174530g:plain
  • ClimbingLadder...梯子登り
    f:id:ikeball:20210108154156g:plain
  • Falling...落下(空中にいる状態)
    f:id:ikeball:20210108154504g:plain
  • WallClinging...壁につかまっている状態(壁を滑っている状態)
    f:id:ikeball:20210108154826g:plain
  • GettingHit...ダメージを受けた
    f:id:ikeball:20210108155040g:plain
  • Dying...死亡時
    f:id:ikeball:20210108155741g:plain
  • Dashing...滑空/飛行
    f:id:ikeball:20210108173717g:plain
必須モーション

全部のモーションを用意できればベストではありますが、必須と感じる部分だけ置き換えることができれば差し替えは可能です。
必須と思う3モーションだけあればゲームは作れます!
用意したモデルでもアニメーションが一部足らないため用意があるものを設定しました。

必須はこれがないとゲームが成り立たないもの。
仕様次第はゲームの仕様次第では無くても問題ないもの。例えば
無くても良いクオリティアップの要素が強く、待機状態等の置き換えでも問題はないもの。ただ、あるに越したことはありません!

重要度 アニメーション名 動き 代替案
必須 Idle 立ち待機 -
必須 Walking 歩き -
必須 Falling 落下(空中にいる状態) -
仕様次第 Running 走り Walkingと同じにするか、歩きのアニメ速度を上げたものにする
仕様次第 WallClinging 壁滑り -
仕様次第 Crouching しゃがみ -
仕様次第 Crawling しゃがみ歩き -
仕様次第 Pushing 押す -
仕様次第 ClimbingLadderIdle 梯子つかまり待機 ClimbingLadder の1フレームを切り抜いたものにする
仕様次第 ClimbingLadder 梯子登り -
仕様次第 Dashing 滑空/飛行 -
無くても良い LookingUp 見上げる Idleと同じ設定する
無くても良い Dangling 不安定な足場 Idleと同じ設定する
無くても良い Landing 着地 Idleと同じ設定する
無くても良い GettingHit ダメージを受けた Idleと同じ設定する
無くても良い Dying 死亡時 Idleと同じ設定する
アーチャーモデルで設定する場合
重要度 アニメーション名 動き 設定した内容
必須 Idle 立ち待機 Idle2
必須 Walking 歩き Walk
必須 Falling 落下(空中にいる状態) Jump_In
仕様次第 Running 走り Run
仕様次第 WallClinging 壁滑り OnWall
仕様次第 Crouching しゃがみ Sit
仕様次第 Crawling しゃがみ歩き Sit
仕様次第 Pushing 押す Walk
仕様次第 ClimbingLadderIdle 梯子つかまり待機 変更無
仕様次第 ClimbingLadder 梯子登り 変更無
仕様次第 Dashing 滑空/飛行 Jump_Spin
無くても良い LookingUp 見上げる Idle2
無くても良い Dangling 不安定な足場 Idle2
無くても良い Landing 着地 JumpOut
無くても良い GettingHit ダメージを受けた Damage_Strong
無くても良い Dying 死亡時 Death
モーションの設定

Animatorの項目をクリックし、Inspector上のMotionに設定することで切り替えることができます。

f:id:ikeball:20210108220120p:plain

アーチャーモデルで設定する場合は下記の場所にモーションファイルがありますので、これをドラッグしてMotionに設定します。

f:id:ikeball:20210108220341p:plain

各モーション全て設定を更新したら設定は完了となります。
上の表にある「アーチャーモデルで設定する場合」を参考に設定をします。

設定は完了となります。おつかれさまでした!
実行し動作の確認をしてみてください。

おわりに

今後も触った内容のメモは残していきたいと思います。
Corgi Engineより先にTopdown Engineに触れたのですが使い方は一緒でした。
Corgi Engineを会得できたらTopdown Engineもその流れで使えるようになりそうです。

残りのモーションをどうするか

ここでは用意されているものだけの実装ですが、Unity上でモーションを作成できるアセットも出ているので、今後はモーション作成にも挑戦してみたいと思います。

関連記事

ikeball.hatenablog.com

ikeball.hatenablog.com