チュートリアル: 「0からはじめるACTION GAME MAKER」第三章

「ACTION GAME MAKER」の「攻撃」と「被ダメージ」

攻撃の命中

プレイヤーオブジェクトにHitArea2D/HitCollisionとAttackArea2D/AttackCollisionというものがあったのを覚えているでしょうか。

「ACTION GAME MAKER」では、AttackArea2DのAttackCollisionが、HitArea2DのHitCollisionにぶつかった際にダメージの処理を行うようになっています。

さらに、Godotの機能であるCollisionLayerとCollisionMaskという機能で「あたる」「あたらない」という機能を調整できます。

CollisionLayerとCollisionMask

前のパートの「壁判定」でも説明を行いましたが、Godotでは、衝突をCollisionLayerとCollisionMask機能で制御することができます。これは、レイヤーという名の通り、衝突判定に奥行きをもたせるものです。

以下のような設定パネルで、レイヤーとマスクを設定します。

レイヤーは、どこにあるか、マスクは、どのレイヤーにぶつかりたいか、ということで理解するのがわかりやすいかと思います。

例えば、Maskが1と2のAttackCollisionは、レイヤーが3しかないHitCollisionに命中することはできません。これを使って、自分自身の攻撃判定にあたる、といった自体を回避することができます。

ダメージの処理

攻撃が命中すると、ダメージの処理が自動で行われます、共にBaseSettingで設定できる、攻撃側オブジェクトの攻撃力分のダメージを、防御側オブジェクトのHPから差し引きます。

その後、同じくBaseSettingsで設定できる、「無敵」を設定することで、一定時間ダメージを受けない状態にすることができます。