チュートリアル:スクリプトコース #3 – 剣攻撃の作成

このコースでは、ACTION GAME MAKERの基本的なスクリプト技術を学びます。
パート3では、剣の攻撃を作成します。


始める前に

このチュートリアルシリーズのパート1およびパート2のプロジェクトを引き続き使用します。
続行する前に、そのプロジェクトを開いて準備を整えてください。

ステップ 1: 剣を追加する

  1. Object_Sampleplayer を開きます。
  2. プレイヤーが現在銃を持っているため、まずそれを非表示にしましょう。W005 Gun:eye: アイコンをクリックして非表示にします。
  3. 次に、プレイヤーに剣を装備しましょう。FileSystem を確認します。銃と同様に、templates > objects > weapons > P_other にいくつかの剣の画像が見つかります。
  4. お好みの剣を B_Weapon の子として追加します。ここでは W_001_sword.png を使用します。
  5. 角度がずれているため、位置と回転を調整します。より良いフィット感にするために、x: 17y: -16Rotation: 48 を設定します。
  6. AnimationPlayer を使用してアニメーションを確認します。033_Swing を再生します。何かおかしい場合は、W001Sword のプロパティを微調整してください。
  7. 剣に攻撃ヒットボックスを追加しましょう。オブジェクトにはすでに AttackArea が存在しますが、現在はプレイヤーの足元に配置されています。AttackArea2DB_Weapon の子として移動します。
  8. AttackArea2D の位置を剣に合わせて調整します。良い設定例は x: 13y: -11Rotation: -42 です。
  9. 次に、AttackCollision のサイズと位置を調整します。位置と回転がずれている可能性があるため、両方を 0 にリセットします。また、デフォルトのヒットボックスが少し短すぎるように見えるため、形状を長くしましょう。注:形状を調整すると、x 座標が自動的に変更される場合があります。
  10. Swing アニメーションをもう一度再生します。ヒットボックスは now 剣と一緒に動くはずです。

解説:

スプライトキャラクター用の攻撃ヒットボックス

スプライトシートを使用して作成されたキャラクターの場合、アニメーションに基づいて攻撃ヒットボックスのサイズと位置を調整することをお勧めします。

インスペクターで CollisionShape2DShape プロパティを展開します。
攻撃モーションの一部として、形状のサイズと位置をアニメーション化するためのキーフレームを設定できます。

ステップ 2: 剣攻撃のビジュアルスクリプト

  1. ビジュアルスクリプトを開きます。
  2. Sword という名前の新しいステートを作成し、アニメーションを Swing に設定します。
  3. 攻撃プロパティを設定するアクションを追加し、攻撃が Enemy グループ内のオブジェクトのみをヒットするように設定します。
  4. Idle から Sword へのリンクを作成し、条件をY ボタンが押されたとき(キーボードの場合は V キー)に設定します。
  5. Idle から Sword へのリンクを選択した状態で、Ctrl+C を押すか、右クリックしてコピーを選択します。
  6. Move を選択し、Ctrl+V を押すか、右クリックしてリンクの貼り付けを選択して Sword に接続します。これにより、移動しながら剣攻撃を実行できるようになります。
  7. 最後に、Sword から Idle へのショートカットリンクを作成し、条件をアニメーションが終了したときに設定します。

これで近距離剣攻撃が機能するはずです。テストして、すべてが正しく設定されていれば、Y ボタン(キーボードの場合は V キー)を押すことでプレイヤーが剣で斬り、ゾンビを倒せるようになります。

ただし、いくつかの問題に気づくかもしれません。

  • 剣が常に表示されており、銃を撃っている間も銃が表示されません。剣と銃の切り替えが必要です。
  • 攻撃していないときでも、剣に触れるだけでゾンビがダメージを受けます。 → これは剣の当たり判定が常に有効になっているためです。

次のステップで、これらの問題に対処します。

「いいね!」 1

ステップ 3: ビジュアルスクリプトを改善する

  1. Idle ステートを選択し、3 つのアクションを追加します。
    最初のアクションは ChangeObjectProperty です。
    W005Gun ノードの Visible プロパティを オフ に設定します。
  2. 2 つ目のアクションも ChangeObjectProperty です。
    W001Sword ノードの Visible プロパティを オフ に設定します。
  3. 3 つ目のアクションも再び ChangeObjectProperty です。
    AttackCollision ノードの Disabled プロパティを オン に設定します。
    これにより、剣の当たり判定が無効になります。
  4. これでテストプレイを試してください。
    剣と銃はどちらも隠され、ゾンビは体の接触によるダメージを受けなくなります。
    しかし、隠されたままになるため、適切に有効化する必要があります。
  5. Sword ステートで、設定を逆転させます。
    2 つのアクションを追加します:
    最初は、W001SwordVisible プロパティを オン にする ChangeObjectProperty です。
  6. 次に、AttackCollisionDisabled プロパティを オフ にする ChangeObjectProperty です。
    これにより、剣の当たり判定が攻撃時のみ有効になります。
  7. ゲームを再度テストしてください。
    正しく設定されていれば、剣は剣攻撃時のみ表示されます。
  8. 次に、銃の設定を行います。
    Shoot ステートで、1 つのアクションを追加します:
  9. W005GunVisible プロパティを オン にする ChangeObjectProperty です。
  10. 再度テストしてください。
    銃は発射時のみ表示されるようになります。

ヒント:アニメーションを使用したプロパティの切り替え

このコースでは、スプライトの表示/非表示を切り替えるために ChangeObjectProperty アクションを使用しました。
しかし、VisibleDisabled などのプロパティをキーフレームとして設定することで、アニメーションを通じてプロパティを制御することもできます。

ただし、注意が必要です:
アニメーションがキーフレームに到達する前に中断された場合、変更が正しく反映されない可能性があります。
例えば、026_Crouch のような一部のアニメーションでは、このテクニックを使用してアニメーションポリゴンで表情を切り替えています。

AnimationPlayer の使用方法については、グラフィックスコースを参照してください。


:blue_book: 次のコース:パート 4