こんにちは、AM0500です。
今回は、AttackArea2D と AttackCollisionなど当たり判定関連のノードの説明になります。
AttackArea2D
モニタリング(Monitoring)
ON にすると、他の当たり判定オブジェクトがこの AttackArea2D の領域に入ったり出たりするイベント(シグナル)が発生します。攻撃発動・ヒット判定などに使います。
モニター可能(Monitorable)
他のノードからこの Area を監視できるかどうか。相互に検知を行いたい場合に必要です。
優先順位(Priority)
重なりの競合時や複数の AttackArea2D が重なる時の処理の優先度を決めます。数値が大きいほど優先順位が高くなります。
重力(Gravity) / 領域のオーバーライド
攻撃領域を動かす場合など、重力影響や領域形状を動的に変えるオーバーライド設定があることがあります(スクショでは「重力」の項目はありますが、AttackCollision や CollisionShape2D のような領域形状は「線形減衰」「角度減衰」等の設定もあります)。
オーディオパス(Audio Path) / 名前(Name)
名前をつけて判定対象を識別したり、Audio パスでヒット時の音を飛ばす設定を行うことがあります。
AttackCollision
シェイプ(Shape)
RectangleShape2D, CircleShape2D などの形状を選ぶ。
攻撃の形状(前方のみ、範囲攻撃、近接攻撃など)に合わせる。
無効(Disabled / Enabled)
攻撃判定を一時的に無効にする設定。
例えばアニメーションの切り替え中や、攻撃ウィンドウ外。
One Way Collision / One Way Collision Margin
攻撃判定を一方通行にするかどうか。
例えば、上から下に落ちてくる攻撃だけを当てたいときなどに使う。
デバッグカラー(Debug Color)
ヒットボックスを目視で確認したいときに使う色の設定。ゲーム制作中の調整に便利。
CollisionShape2D / HitCollision との関連系
類似するパラーメタとして、CollisionShape2D / HitCollisionがあり、どちらも同じようなパラメータになっています。
ゲームを作る際には、キャラクターやオブジェクトが「どこに当たったか」を判定する仕組みが必要です。見た目の画像やアニメーションだけでは衝突は起きないため、専用の「当たり判定(コリジョン)」を設定します。ここでは、特によく使う CollisionShape2D と HitCollision について解説します。
CollisionShape2D(コリジョンシェイプ)
CollisionShape2D は、キャラクターや物体の「体の枠」を定義するためのノードです。
見た目の画像に直接当たり判定があるわけではなく、別途このノードで形を指定する必要があります。
-
主な用途
-
プレイヤーが床や壁にぶつかる範囲を決める
-
敵やアイテムと接触したかどうかを判定する
-
移動やジャンプなどの挙動に物理的な制約を与える
-
例えるなら「キャラクターの見えない体の輪郭」をゲームに教えているイメージです。
HitCollision(攻撃判定)
HitCollision は、攻撃やダメージ処理のために使う当たり判定です。
キャラクターが剣を振ったりパンチをしたときに、「どの範囲に攻撃が当たるか」を一時的に判定します。
-
主な用途
-
剣を振ったときに敵へ当たる範囲を指定
-
飛び道具や弾が敵に当たったかを判定
-
必殺技など広範囲攻撃の判定を作る
-
通常は無効(非表示・非アクティブ)にしておき、攻撃アクションのタイミングだけ有効化するのが一般的です。
【実践テクニック】「気持ちいい攻撃」を作るための3つのコツ
判定を置くだけでも攻撃は成立しますが、プレイヤーが「納得感」を得られる設定には、いくつかの秘訣があります。
① 判定は「見た目より少し広め」が基本
剣を振るアニメーションの場合、エフェクトの端まで判定を置くのではなく、プレイヤーにとって有利な方向に少しだけ広げるのがアクションゲームの定石です。 「当たったと思ったのに当たっていない」というストレスを最小限に抑えることで、操作感が劇的に向上します。
② 判定の「発生タイミング」を絞る
アニメーションの全フレームに判定を置くと、不自然な場所で敵がダメージを受けてしまいます。
コツ: 剣を振り抜く「最も勢いのある数フレーム」だけに
AttackCollisionが有効になるよう、アニメーションエディタ側で制御しましょう。これにより、メリハリのある攻撃演出になります。
③ 多段ヒットの制御(Attack IDの活用)
1回のスイングで敵に何度もダメージが入ってしまう場合は、AttackArea2DのプロパティやVS(ビジュアルスクリプト)で「一度当たった敵には、その攻撃が終わるまで再判定を行わない」というフラグ管理が必要です。
これにより、「一撃の重み」を正しく表現できるようになります。
前の記事:【初心者向け】アクションゲームメーカーのキャラクター設定4(MoveAndJumpSettingsで登場するパラメータについて)




0 件のコメント:
コメントを投稿