TPSシューティング奮闘記~武器の変更~
前回の続き~!
前にも武器変更の記事書いたけど、今回は「銃」の切り替え!
~武器変更の為のボタン(キー)~
ピストルに変更・・・1キー、十字キー上
ライフルに変更・・・2キー、十字キー右
ショットガンに変更・・・3キー、十字キー左
プレイヤーのイベントグラフ
「CurrentWeapon」という変数は、「現在装備中の武器」が格納されてる。
※Current・・・現在 Weapon・・・武器
初期装備として「Pistol」を装備させてるので、「CurrentWeapon」には「Pistol(武器名NFP-16)」のBPが格納されてる。
DoOnceがあるのは、連打してアニメーションを何度も連発させない為。
例:Rifleに変更したい場合・・・
まず当然Rifleを持ってなきゃ変更できないので、IsValidでRifleがあるかどうかを判定してる。
もし持ってればIsValidはTrueになる。
そして、Rifleを所持していて尚且つ現在装備中の武器がライフル以外の物なら、NotEqualはTrueになる。
というわけだ。
つまり、Rifleに武器変更したい場合は・・・
・変更したい武器(Rifle)を所持。
・Rifle以外の武器を装備中
この2つの条件を満たしていれば武器の変更が可能になるのだ。
武器変更した際、どの武器に変更するかのEnum値をセットしている。
例えば、Rifleに武器変更する場合はEnum値が「Rifle」にセットされる。
※ 初期装備として「Pistol(NFP-16)」を装備させてる。
武器変更ボタン(キー)押した時、まず現在武器変更中という情報を格納する為に、「IsWeaponChange??」というBool値をTrueにセット。
そして、武器変更アニメーション(モンタージュ)を再生。
武器変更した際にセットしたEnum値は、ここで使われる。
「AttachWeapon」というカスタムイベントが呼ばれた時、実際に武器を変更する処理を行う。
各武器によってアタッチする場所が違うのでスイッチを使用している。
ちなみに、「AttachWeapon」カスタムイベントはAnimBPから呼び出されている。
この「ChangeWeapon」というのはモンタージュに設定したAnimNotify通知の事だ。
武器変更ボタンを押し、アニメーションが再生され、「ChangeWeapon」通知が来た時に、プレイヤーの武器変更処理を行う為のカスタムイベント「AttachWeapon」を呼び出す。
といった感じだ。
アタッチ処理はこんな感じ。
アタッチする場所は、すでに各武器に備わってる構造体「WeaponInfo」に格納されてるので、そのピンをただ繋げればいいだけ。(もっといい方法があるはずだけどなぁ・・・笑)
そして、アタッチ後変更した武器を現在装備中の武器として「CurrentWeapon」に格納。
最後に、武器ごとのアニメーション(IdleやWalkなど)を変更するために、トランディションルールBool値をセット。
ピストルに変更した際は、「EquipPistol」がTrue.「EquipRifle/ShotGun」がFalse。
ライフルかショットガンに変更した際は、「EquipPistol」をFalse。「EquipRifle/ShotGun」をTrue。
Animグラフ側
Pistol→Rifle/ShotGun
Rifle/ShotGun→Pistol
アタッチ処理が終わった後、「WeaponChangeEnd」カスタムイベントが呼び出される。呼び出された時、武器変更が終了したという事で「IsWeaponChange??」をFalseにする。
そして、DoOnceのResetに処理が流れ、もう一度武器変更が可能になる。
ちなみに、「WeaponChangeEnd」カスタムイベントはAnimBP側から呼び出されている。
「Reset」というのは、アニメーションモンタージュで設定したAnimNotify通知の事だ。
アニメーションの終わり辺りに設置している。
これでプレイしてみよう!
しっかり武器変更が行われている!
最後に実際の処理の流れも!見づらいようならごめん!笑
それではまた!^^ノシ