UE5初心者が取得後7秒間空を飛ぶ「無重力飛行バフアイテム」の作成方法についてまとめていくぜ!
▼本文は「続きを読む」からどうぞ~!
◆復習用メモ
①ブループリントインターフェース「BPI_PickUp」を作る
ブループリントインターフェース「BPI_PickUp」を作り、その中の[FUNCTIONS]に「Wing」も追加する。
②アクターBP「BP_FlyItem]を作る
アクターBP「BP_FlyItem」を作る。
▼以下のようにイベントグラフを編集する。
③プレイヤーBP「BP_ThirdPersonCharacter」を編集
イベントグラフの上部[Class Settings]を左クリで有効化後、右下[▼Implemented Interfaces]から[BPI_Pick Up]に紐づける。
左下[▼INTERFACES]内にある[Wing]をダブルクリックしてイベントグラフへ追加。
▼そのまま後ろの処理を書いていく。
これで、ジャンプ後に空中へ浮かんでいく飛行バフを実装できた。
(※7秒たったら効果が切れて地上に戻ってくる。
ゲームジャンルによっては、バフじゃなくて行動阻害デバフっぽくなるかも!)
◆ノードまとめ+感想
「Set Gravity Scale」
ターゲットピンに[Character Movement]コンポーネントを繋げると、重力が変更できる。
(プレイヤーのビューポート左上にあるコンポーネント欄から[Character Movement~]をドラッグ&ドロップでGetしてイベントグラフへ配置。
[Gravity Scale]の初期値も同コンポーネント内のDetails欄に書いてあるので要確認)
※死亡の概念があるゲームなら、死亡時orリスポーン時に重力を初期値へSetしておいた方が良いかも。
「BPIが想像以上に便利すぎる件」
つい最近覚えた「ブループリントインターフェース(BPI)」のおかげで、取得後にプレイヤー側の状態変化が起きるアイテムを作りやすくなった…!
- [On Component Begin Overlap]+[Get Player Character]+[==]+[Branch]+[Message(BPI)]+[Destroy Actor]などの構成で使うとすごく便利。
- BPIを使わない場合、[Get Player Character]+[==]の部分は[Actor Has Tag]でも代用できる。
- ただし、後ろでBPIを発信する予定がある時は[Actor Has Tag]だと参照情報を得られず二度手間だから、[Get Player Character]+[==]にしておく。
- BPIと[Get Player Character][==]を上手く使えば、[Cast to]の使用頻度がだいぶ下がりそう!!
ちなみに、複数のBPへBPI通知を発信する場合は、[Get All Actor With Tag]というノードがとても便利だった。
※このノードは、あらかじめタグ付けしておいたアクターの参照情報をまとめて取得できる。
◆本格的な飛行モードを作りたい人向けの情報まとめ
▲上昇/下降までを実装したい場合、上のQ&A記事や動画を見てみるのが良いと思う!
(後でこのパターンも作ってみたい)