Unity&CorgiEngineを使ったアクションゲーム作り ~アニメーションと当たり判定①~
CorgiEngineを使用してアクションゲームを作る、という名目ではじめたこの記事。飽きないうちに続きを書いていこうと思います。
ちなみに前回(初回)はこちら
じつはだいぶ前の制作状況を再現しながら書くためところどころで抜け落ちている可能性があります(・へ・)
あくまでここは備忘録のようなものなので……。
もし「わからないので教えてください!!」と訊かれましたら「そうですねぇ(´-ω-`)」と一緒に悩むことはできると思います。
さて。今回はテストで作成したコーギー君の変更を行います。Animator関連になりそうですね。
コーギー君はマシンガンなどの重火器を柔軟に扱えるスキルを持ち合わせていますが、いかんせん、剣を一振りしかできません。
ただ変更する前にAnimatorの構成と当たり判定の出現方法などを理解しておく必要がありますね。見ていきましょう。
現在のコーギー君(SpaceCorgi)のAnimator設定はこんなかんじでAnyStateとすべてつながった構成です。状態がたくさんつながってますね……。
CorgiEngineでは各ステートからではなくAny StateからBoolパラメータを見て即座に切り替えているみたいです。この中で剣を振るモーションに関連しているのは
ここ。MeleeStartというBoolパラメータを利用して遷移してますね。これはどこから来てるんでしょうかね。まずコーギー君のコンポーネントはこんな感じに連なってます。
CorgiEngineではこのように使用する能力を各コンポーネントとしてくっつけて、Animatorを調整していきます。
そして私は早く武器を振るアクションを作りたいので関連してそうなCharacterHandleWeaponを見ます。
・Ability Permittedはその能力がいつでも使えるか、みたいな設定
・Initial Weaponは最初に装備する武器
・Weapon Attachmentは追従して動かす場合に関連しそう、手とかに設定?
これを初期設定ではマシンガンになってますので、別のWeaponプレハブであるCorgi Swordに変更して付け替えます。
(ちなみにCorgiSword1になっているのは念のためコピーしたせいです)
Melee Weaponというのがコーギー君に持たせた剣に関わるスクリプトです。
この下部にAnimation Parameters Namesという項目があり、ここに最初に確認したMeleeStartという項目があります。
アニメーションとパラメータを同期させる必要があるのでここの設定と設定時間をいじる必要があります。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。
このボックスの大きさは変更することが可能です。また、先ほどの通り出現時間などをアニメーションと同期させる必要があります。
とりあえず、そろそろキャラクターもコーギー君から変更するため、攻撃アニメーションなどがついているこちらのアセットを使いました。
そしてなんとなくこのキャラを選びます。
状態遷移も考える必要があります。ごくシンプルにしたいですね。いったんはコーギー君のコンポーネントやAnimatorの設定にならってこんな感じに計画します。
ただしダメージモーションやダッシュ(Run以上の)などは存在しないので仮に設定するだけです……。
なんだか長くなってきたのでいったん次回に回したいと思います。
Unity&CorgiEngineを使ったアクションゲーム作り
UnityでのCorgiEngineというアセットがありましてアクションゲームにおける完全なプラットフォーマーと呼ばれるほどらしいので、これを使ってアクションゲームを作りたいと最近思い立ちました。
それというのもICEYという2Dの横スクロールアクションゲームをプレイして、やっぱりこういう系統のアクションゲームは昔から好きなので、自分でも作ってみたいと思ったわけです(あと仕事中暇すぎるのでなにかを作っていたいというのもあります)。
こう剣戟で進めていくタイプのアクションゲームですね。
まぁICEYはメタ的なツッコミを期待する面白さが半分くらいあるんですけど。
さてアクションゲームを作りたいとはなったんですけど、最初から作るのは骨が折れます。そもそも私はプログラムはかじったことはあるけど、ゴリゴリと組める感じではないので。
何かいいアセットはないかなぁと探していたところ、2DプラットフォーマーのCorgiEngineというのを見つけました。
どんなものか、というものはこちらの記事が参考になります。
中身を見てみると、洞窟物語のような2Dシューターゲームをほぼ想定された作りになってます。ジャンプアクションゲームもできそうですね。
ですから、武器種類もマシンガン、ロケットランチャーなどそちらのサンプルは多いんですが、剣のような武器はサンプルはただひとつで、おまけにサンプルシーンも存在してません。んー。
理想としてはコンボ攻撃とかができないと爽快感ないですよね。
あとは高速ダッシュとか、空中ダッシュとか、空中攻撃とか。状態とボタンの組み合わせで攻撃が変わる感じは出したいです。
とりあえずコーギー君のままではアクションもままならないのでキャラクターも変える必要があります。
幸いステージや敵などは流用しながら自分でパターンを増やす方向性ができるので、問題の先送りができそうです。
そして、エフェクトやサウンド、当たり判定はすこし後回しにするとして。
必要なものをまとめましょう。
- キャラクターを変更(2Dプラットフォームなのでボーンアニメーションをさせる)
- 最初からのサンプルであるMeleeWeaponのみでは爽快感に欠けるため、見直しが必要
- 当たり判定が攻撃によって変化、追従するように
- コンボ攻撃ができるようにしたい。また、当たり判定やAnimatorとの連携の仕方を知る必要がある
- 空中ダッシュなどが使えるようにしたい(幸いダッシュ機能はもともとある)
- 空中攻撃などができて、ボタンの組み合わせなどで攻撃が変化
- ステージギミックやエフェクト、サウンド類は後回しでキャラクターの基本アクションの実装を先に
そんなところでしょうか。
今後、この辺りを目標に据えて徐々に進めていきましょう。
次回はキャラクターの変更とアニメーションをさせるところなど。
到着不定のブログ開始
この記事は特に着陸点も定まらずに書かれています。
- 趣味で物書きをしていた人のリハビリ目的
- ゲーム企画者の一端としてのメモ書き
- 趣味でゲームを作りたいときの方針固め
- そんなことぜんぜん関与しない日常綴る場所
- 何を書けばいいか分からなかったので開設して二週間経っている
そんな経緯があります。
プロフィールにも書いた(はず?)通り、ゲーム企画者のひとりではありますが(現状すごく微妙な立ち位置)、そういいつつ声に出したこともないなと思い返したのでそういう場を作ろうと思いました。はずです。かなり前なのでうろ覚えです。
とりあえず気負っても始まらないことに二週間経ってから気がついたので、ゆるっとはじめていくのが性に合ってるんだと思います。
とりあえず予定としては最初に書いたとおりで、ゲームに関わることとかをメインで書けたらいいなとは思っています。
無駄に長くしてしまいがちなので、今回は簡単に。
とりあえず困ったらとりあえずからはじめるのはとりあえずやめた方が良さげです。とりあえず。