格闘ゲームの作り方・プログラムの解説 その6

今回は、前回でキャラクターセレクトを説明したので、これからバトルに使用するステージをロードして、バトル開始となりますが、その前に、キャラクターブループリントの事前設定について説明します。

キャラクターブループリントの構成は次のようになっており、まずはCapsuleComponentから説明します。

CapsuleComponentはキャラクター同士が衝突したときの判定用として使用しており、 形状についてはエディタ右側のシェイプにある、高さと半径で指定します。(単位はcmとなります。)

さらに、衝突を判定するため、エディタ右側にあるCollisionの設定を次のように行います。

■Generate Overlap Events: Capsuleにオブジェクトが重なったときのイベント検知を有効にします。

■コリジョンプリセット:Customに設定し、次のように詳細設定を行います。

・Object Type:World Dynamicに設定します。

・コリジョンレスポンス:World Static(ステージの床など)のブロックにチェックを入れ、World Dynamicはオーバーラップにチェック、その他は無視にチェックを入れます。

つまり、CapsuleComponentの衝突判定としては、まずCapsule自体をWorld Dynamicという種類に設定し、ステージの床や壁である、World Staticに対しては、すり抜けが発生しないようにブロックしており、相手キャラクターのWorld DynamicであるCapsuleに対しては、オーバラップを検知する設定となっています。

さらに、キャラクターに設定されたWorld DynamicのCapsuleであることを限定するために、エディタ右側のタグへ「Player」という名称を設定しています。

最後に、イベントについて説明します。

CapsuleComponentにオーバラップした時のイベントとして、オーバラップ開始と終了を検知するイベントを設定します。

イベントグラフのタブで次のようなイベントが確認できればOKです。

処理内容の詳細は別の記事で解説します。

次に、Meshについて説明します。

Meshはキャラクターのグラフィックを設定するのに使用しており、まずはCapsuleComponentとの位置と向きを設定するのにエディタ右側にあるトランスフォームで次のように設定しています。

次に、 エディタ右側にあるアニメーションのAnimation Modeを「Use Animation Blueprint」に設定しますが、その下にあるAnim Classについては、「なし」に設定しておきます。

これは、キャラクターセレクトで「BP_Char01」をスポーンするときには、Animation Blueprintを使う必要がないので、初期的には「なし」にしておき、バトル前に再度 「BP_Char01」 をスポーンする時に手動で指定します。

Meshの衝突判定については、自身を「Pawn」に設定しておき、コリジョンレスポンスは、すべて「無視」としています。

次にMeshの子として設定してるコリジョンボックスについて説明します。

■Damage:パンチやキック等の打撃のヒット確認をするコリジョンボックスです。

位置や形状、衝突設定は次のようになっています。

例えば、打撃に対して無敵にしたい場合は、object TypeをPhysicBody以外に設定すると無視することになるので達成できます。

また、イベントについては、オーバーラップを開始したイベントを用意します。

■Arm_R/L及びFoot_R/L:両手両足の攻撃判定となるコリジョンボックスです。

位置や形状、衝突設定は次のようになっています。

先ほどと違う点は、コリジョンボックスの位置について起点となる親ソケットを指定している所になります。

■Damage_for_Bullet:必殺技の弾に対してヒット確認をするコリジョンボックスです。

位置や形状、衝突設定は次のようになっています。

Damageのコリジョンボックスと同様に、弾に対して無敵にしたい場合は、object TypeをPawn以外に設定すると無視することになるので達成できます。

また、イベントについては、オーバーラップを開始したイベントを用意します。

■Cross_attack:ジャンプ攻撃について、めくり攻撃を有効にする場合専用の攻撃判定となるコリジョンボックスです。

位置や形状、衝突設定は次のようになっています。

■Damage_for_Throw:投げに対してヒット確認をするコリジョンボックスです。

位置や形状、衝突設定は次のようになっています。

また、イベントについては、オーバーラップを開始したイベントを用意します。

■Throw:投げの攻撃判定となる、コリジョンボックスです。

位置や形状、衝突設定は次のようになっています。

以上でコリジョンボックスの説明は終了しますが、打撃と弾と投げについてそれぞれ別のObject Typeを指定することで、打撃への無敵、弾への無敵、投げへの無敵が指定できるようになっています。

それでは最後にCharacterMovementの初期設定を説明します。

まずは、基本設定として、重力と重量を設定します。

この2つの値はジャンプしてから着地するまでの時間に影響します。

さらに「Max Acceleration」を設定しますが、これは、方向キーを押してから最大の速度が出るまでの時間に影響するので、1フレーム目から最大の速度となるよう非常に大きな値を設定しています。

次に歩行に関しては、「Max Walk Speed」と「Breaking Deceleration Walking」を設定します。

「Max Walk Speed」については、バトル前のスポーンで再度設定しますが、 「Breaking Deceleration Walking」 については、方向キーを離してから 「Speed」が「0」になるまでの時間に影響するので、方向キーを離して1フレーム目に「0」となるよう非常に大きな値を設定しています。

最後にジャンプと落下については、「Jump Z Velocity」「Braking Deceleration Falling」「Air Control」「Falling Lateral Friction」「Apply Gravity While Jumping」を次のように設定します。

「Jump Z Velocity」については、上方向への初速となり、数値が大きほど高く飛びますが、着地までの時間は重力と重量に依存します。

「Braking Deceleration Falling」については、ジャンプしてから落下するまでの間、横方向に減速を加える値を設定しますが、ここでは「0」としており、ジャンプした際の横方向への初速は、バトル前のスポーン時に設定しています。

「Air Control」については、複数の設定項目がありますが、ジャンプしてから空中での姿勢制御をどれくらい可能にするかの値を設定しており、ここでは全て「0」としています。

「Falling Lateral Friction」は、ジャンプ中の空気摩擦の値を設定しており、ここでは「0」としています。

「Apply Gravity While Jumping」 は、ジャンプ中の重力を適用するか設定しており、チェックをONにします。

つまり、ジャンプと落下については、方向キーに応じた初速を与えた後、重力と重量に応じて落下させているだけで、他の物理的な力は加えていないことになります。

以上でキャラクターブループリントの事前設定の説明は終了となります。

次回は、バトル前のステージロードやラウンドコール等の設定を説明します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください