もしも、あるいはそれ以外のこと

Unityを使ったゲーム作りや、ゲームについて考えたりしています。

Unity&Corgi Engineを使ったアクションゲーム作り ~プレイヤーキャラクターのセットアップ~

Animator関連を触っていたんですが、Corgi Engineでキャラクターを動かすのにセットアップ作業が必要になります。今回は実際に動くところまで。
セットアップ作業自体は同じなので、違うキャラクターを使って試してみたいと思います。(自分が覚えているのかのチェックも兼ねて)
 前回はこちら。
ちなみに今回はプレイヤーキャラクターとしての操作できるまで、ここまでを目指します。
 

 
 
◆キャラクターのセットアップ
 
セットアップに使うシーンは最小構成とされているシーンを使います。
\Assets\CorgiEngine\Demos\Minimal\
MinimalLevelシーン
基本的にテストに使うシーンはここのシーンをコピーして使います。
キャラクターは何キャラかいるんですが、セットアップ用に今回こちらのキャラクターを使います。 

 まずはこのキャラクターをシーンにインポート。選択して、Animatorの設定をもともとのサンプルであったコーギー君の設定に倣います。
 
Corgi Engineのセットアップ初期設定では右向きに各種の設定がされますので(変えられますが、視認上こちらのほうが都合がいい)、ので先に設定を変えておきます。
  • Scale Xを2⇒-2にする
  • Animatorの
    • Apply Root Motionを切る(Animator準拠で座標移動などをさせる設定?だったような)
    • Culling Mode ⇒ Always Animate
に設定変更です。

 Characterコンポーネントを追加します。
そのなかのAuto Build Player Characterをクリックすると一通りのセットアップが終わります。
また、あとで気が付いたんですが、Modelを設定しておかないとFlip On Direction Changeによるキャラクターが反転処理が働きませんので、ここで設定しておきます。
 

するとこんな感じにコンポーネントのたぐいがいろいろくっついてきます。
スクリプトの詳細が開かれている場所が歩く速度などの調整が必要な部分です。
基本的にデフォルトで不自然な動きではないと思ったので、現状私はほぼそのままにしてます。
 

とりあえず、Character Jumpの俗にいう多段ジャンプの項目があり、デフォルトで3回は自由度が高いな、と感じたのでこれだけ二回に直します。
Number Of Jumps⇒2
Jump Heightなどの設定はお好みで。

 
そして使わないスクリプトなどは今のうちに外しておきましょう。

  • Character Crouch しゃがみ
  • Character Dangling ぶら下がり
  • Character Jetpack ジェットパック
  • Character Wall Clinging 壁につかまる
  • Character Walljump 壁ジャンプ
このあたりをアニメーション側がなかったりするので外します。必要に応じて追加というかんじで。
 
 
◆Animatorの設定見直し
 
キャラクターのAnimator設定を変更して歩かせるようにします。
パラメータの設定はコーギー君の設定を参考にします。
\Assets\CorgiEngine\Demos\Corgi2D\Prefabs\PlayableCharacters
ここのプレハブ内のAnimatorのパラメータ設定ですね
 
初期設定から

 
遷移条件を各種Bool値をtrueでつなげてこんなかんじにしました。
 

 
動きを確認してみます。今更ですがキャラクターを出現させるにはシーン内に存在する、LevelManagerのここを変更します。

 
プレハブ化しないとキャラクターが二体生成されますが、現状、画面を見ながら調整しますのでゲームがはじまったら片方をOFFにするかんじでやります。
 

 
んー……? なんか動きがつっかえてますね。それに空中に浮いてますね。
それに影になっているのか、キャラクターが暗いです。
一度コーギー君の設定とアニメーションを確認しなおしましょう。
 

 
コーギー君はちゃんと歩いている感じがしますが、AnyStateから何度も最初から遷移してるのがわかりますね。
どうやらデフォルトの設定に合わせると普通にアニメーションさせる分にはすこし不都合がある様子。
ですので遷移条件とAnimatorの設定を再度見直します。企画屋さんらしくちゃんと状態遷移を書きましょう!
 

 
AnyStateはボタンが押された判定などを使う際にそのまま使えそうなので、ダメージを受けたときや死んだとき、攻撃、などの条件につなげます。
こういう遷移図を書くのにGoogleドライブのプラグイン、draw.ioが便利です。
 
また、空中に浮いたように見えるのは当たり判定が設定されていないのが原因です(でした)。ズレてますね……。

本体よりすこし小さく判定をとって、こんなかんじに。

 
また、キャラクターが暗く見えるのはライティングの影響を受けているからです。
マテリアルのシェーダーをSpriteに変更すると直せます。
既存のマテリアルをコピーしてShader項目だけ変更しました。

※ 追記
こちらで進めるとキャラクターのパーツの描画順がおかしくなるので、StandardでEmissionを使って自己発光させるほうがいいです

f:id:blazwel:20180704084103p:plain

 

 Animatorの各種Stateのアニメーションは足りなければ現状は代わりのもので代用しましょう。
JumpAndFall、DashはRunモーションで、DamageやDeadはないので、今のところは諦めます。

f:id:blazwel:20180701120655p:plain

とりあえず代用。
ここまで来たら確認してみましょう!

f:id:blazwel:20180701115722g:plain

一通り動いてますね!(はず)
次回からはまた、アニメーションや当たり判定を作っていって攻撃系のものを作っていきます。