チュートリアル: スクリプトコース#1 射撃攻撃を作ってみよう。

STEP3: プレイヤーに弾と銃を設定しよう。

  1. Object_Sampleplayerタブに戻りましょう。

  2. シーン画面左上のノード追加ボタンを押してください。

  3. Node>AGMakerにあるBulletSettingsノードを追加します。これは発射する弾を管理するためのノードです。

  4. BulletSettingsは以下のように弾を発射する側オブジェクトに設定します。

  5. BulletDataList→弾を追加(+Add Bullet)→<空>→NewBulletDataと展開し、新しい弾データを作ります。

  6. 弾の基本設定をします、BulletData>Bullet Base Settingsを展開し、以下のように選択します。
    名前: 任意の名称をつけてください、ここではSample_Bulletとします。
    オブジェクトパス: 先ほど作成したsample_bulletを指定してください。*以後、sample_bullet.tscnの場所を移動すると参照が切れて動作しなくなるのでご注意ください。
    弾を無制限にする: オン *ここについては後ほど解説します。

  7. 次に初期動作を設定します。初期動作(Initial Behavior)を展開し、初期動作をオブジェクトの表示方向に発射(FireObjectDirection)としましょう。

  8. これで弾の設定は完了です。これで弾を発射アクションでsample_bulletを表示方向に発射できるようになりました。続いて銃を持たせていきます。

  9. AnimationPlayerを選択してアニメーションで044_Gun_Aimを選択して再生してみてください。銃を撃つアニメが再生されます・・・が、素手のままです。

  10. 銃の画像自体は同梱されていますファイルシステムのtemplates>objects>weapons>P_otherの中にW_005_gun.pngがありますのでこれを使いましょう。この銃を左手のボーンにもたせるとうまくいきそうです。

  11. シーンウィンドウに戻り、BoneAnimationRoot2d>Skeleton>B_Chest>B_Joint_L>B_Arm_L>B_Hand_L>B_Weapon_Lを選択してください。

  12. B_Weapon_Lを選択した状態で、ファイルシステムのW_005_gun.pngを手のあたりに持っていき、Shiftを押しながらドロップします。

  13. Shiftを押しながらドロップすると選択したノードの子ノードとなるため、B_Weapon_Lの子としてW005Gunが追加されたはずです。うまくいかなかった場合は手動で動かしてください。

  14. 配置できましたが変な角度になってしまっていますので直しましょう。W005Gunを選択して、Node2D>Transformの位置(Position)と角度(Rotation)を直します。
    大体x:12,y:21,Rotation:156.4くらいにすればきれいになるはずです。
    なお、なぜ0度なのに傾いているのかという点については、親となる骨の角度がアニメーションによってすでにそのように傾いているからです。

  15. アニメーションを再生して問題なく動くか確認してみましょう。問題がなければ次は発射地点となる銃口を設定します。

  16. 発射地点にはConnectorというノードを利用します。このサンプルキャラクターには既にConnector - gun fireというそれらしきノードがありますが、なぜか足元にあるようなので調整しましょう。銃のグラフィックと同じく位置を調整して銃口のあたりに移動しましょう。

  17. これで、弾、銃、銃口の設定ができました。

弾の各設定の説明

基本設定
発射数(Shot Count): 一度のアクションで発射する回数です。連射やショットガン等を再現できますが、発射中にステートが遷移すると途中終了してしまうことには気を付けてください。
発射間隔(Fire Interval): 発射数と合わせて使います、発射の間隔です。この数値を0.3秒にすれば、0.3秒ごとに一発の弾を発射し、0秒にすれば同時発射になります。
弾の表示数(Shit Limit): 画面内に表示できる弾の上限数です。これが1であれば、すでにある弾が消滅するまで発射できなくなります。
初期動作
初期動作(Initial Behavior): 発射された弾がどのように動くのかを指定します。弾側で移動スクリプトが設定されている場合は、弾側のスクリプトが優先されます。
発射範囲を広げる(Spread Range): 弾の拡散範囲を指定します。
動きを指定(Spread Type): 弾の拡散の仕方を指定します。固定であれば発射角度の中で等間隔に発射し、ワイパーであれば発射角度の内で上下に動きながら発射します、ランダムであれば発射角度の内でランダムで拡散します。
動きの変化
動きの変化(In-flight Behavior): ロックオンしたターゲットを追尾したり、ブーメラン軌道を描いたりを指定できます。弾側で移動スクリプトが設定されている場合は、弾側のスクリプトが優先されます。