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

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

Unity&CorgiEngineを使ったアクションゲーム作り ~アニメーションと当たり判定①~

CorgiEngineを使用してアクションゲームを作る、という名目ではじめたこの記事。飽きないうちに続きを書いていこうと思います。

ちなみに前回(初回)はこちら

blue-mist.hatenablog.jp

じつはだいぶ前の制作状況を再現しながら書くためところどころで抜け落ちている可能性があります(・へ・)
あくまでここは備忘録のようなものなので……。
もし「わからないので教えてください!!」と訊かれましたら「そうですねぇ(´-ω-`)」と一緒に悩むことはできると思います。

 

さて。今回はテストで作成したコーギー君の変更を行います。Animator関連になりそうですね。

コーギー君はマシンガンなどの重火器を柔軟に扱えるスキルを持ち合わせていますが、いかんせん、剣を一振りしかできません。

f:id:blazwel:20180627004545p:plain

ただ変更する前にAnimatorの構成と当たり判定の出現方法などを理解しておく必要がありますね。見ていきましょう。

現在のコーギー君(SpaceCorgi)のAnimator設定はこんなかんじでAnyStateとすべてつながった構成です。状態がたくさんつながってますね……。

f:id:blazwel:20180627004305p:plain

CorgiEngineでは各ステートからではなくAny StateからBoolパラメータを見て即座に切り替えているみたいです。この中で剣を振るモーションに関連しているのは

f:id:blazwel:20180627004517p:plain

ここ。MeleeStartというBoolパラメータを利用して遷移してますね。これはどこから来てるんでしょうかね。まずコーギー君のコンポーネントはこんな感じに連なってます。
CorgiEngineではこのように使用する能力を各コンポーネントとしてくっつけて、Animatorを調整していきます。

f:id:blazwel:20180627004503p:plain

そして私は早く武器を振るアクションを作りたいので関連してそうなCharacterHandleWeaponを見ます。
・Ability Permittedはその能力がいつでも使えるか、みたいな設定
・Initial Weaponは最初に装備する武器
・Weapon Attachmentは追従して動かす場合に関連しそう、手とかに設定?

これを初期設定ではマシンガンになってますので、別のWeaponプレハブであるCorgi Swordに変更して付け替えます。

(ちなみにCorgiSword1になっているのは念のためコピーしたせいです)

f:id:blazwel:20180627004513p:plain

Melee Weaponというのがコーギー君に持たせた剣に関わるスクリプトです。

f:id:blazwel:20180627004524p:plain

この下部にAnimation Parameters Namesという項目があり、ここに最初に確認したMeleeStartという項目があります。

f:id:blazwel:20180627004527p:plain

アニメーションとパラメータを同期させる必要があるのでここの設定と設定時間をいじる必要があります。CorgiEngineのチュートリアル内に

タイミング 

武器を作成するときは、武器のコンポーネントをアニメーションに完全に同期させたいので、タイミングは不可欠です。すべての武器には、インスペクタから直接微調整できる2つの変数、DelayBeforeUse(入力登録と実際のWeaponUseの間の時間 - ショット、斧スリングなど)、およびTimeBetweenUses(あなたが別のWeaponUse(それが自動であるか、繰り返し押されているかにかかわらず)。武器はその間に "発射されません"。

さらに、近接武器には、InitialDelay(WeaponUseとダメージ領域のアクティブ化の間の遅延)とActiveDuration(ダメージ領域がアクティブのままになる時間)の2つの変数があります。これらの最後の2つのパラメータは、損傷領域に特有のものです。もちろん、これらの値をDelayBeforeUse / TimeBetweenUsesと同期させて、競合を防ぐこともできます。

日本語訳。

実際の設定値の流れとしては

  • Idle Animation Parameter(武器有効時)
  • Start Animation Parameter(ボタンが押されて攻撃開始)
  • Delay Before Use(攻撃前時間)
  • Use Animation Parameter(攻撃中)
  • Time Between Uses(攻撃終了の待機時間)

という感じになります。文中の損傷領域というのはDamage Areaという攻撃判定の出現時に行われるときに影響するものようです。

実際に武器が振られた時の当たり判定を見てみます。四角のエリアが当たり判定を示しています。これがDamage Area。

f:id:blazwel:20180627004541p:plain

このボックスの大きさは変更することが可能です。また、先ほどの通り出現時間などをアニメーションと同期させる必要があります。

 

とりあえず、そろそろキャラクターもコーギー君から変更するため、攻撃アニメーションなどがついているこちらのアセットを使いました。

 

assetstore.unity.com

そしてなんとなくこのキャラを選びます。

f:id:blazwel:20180627004509p:plain

状態遷移も考える必要があります。ごくシンプルにしたいですね。いったんはコーギー君のコンポーネントやAnimatorの設定にならってこんな感じに計画します。

f:id:blazwel:20180627004435p:plain

ただしダメージモーションやダッシュ(Run以上の)などは存在しないので仮に設定するだけです……。

なんだか長くなってきたのでいったん次回に回したいと思います。