風を起こして物を飛ばそう!
今回は
風を巻き起こして
物を吹き飛ばす方法!
を紹介します!
まず、BPインターフェースを作成します。
~BPインターフェース~
「MyInterface」という名前にしました。
「AddImpulseActorBPI」という名のインターフェースを作成。
物を吹き飛ばすイベントとして扱います。
~BP_Wind~
WindArea
WindDirection
変数
WindLength・・・デフォルト値「1000」
WindDirection・・・Arrowコンポーネント
イベントグラフ
WindAreaコンポーネントの詳細パネルで
「HiddenInGame」のチェックを外しましょう。
WindAreaの範囲を可視化する為です。
~吹き飛ばすアクターの作成~
「BP_SimulatePhysicsObject」という名前にしました。
※作成したインターフェースを追加するのを忘れずに。
SimulatePhysicsをONにします。
イベントグラフ
BP_Windから受け取った値(Impulse)分、吹き飛ばすアクターに衝撃を与えます。
~BP_Windをレベルに配置~
これだと範囲が小さすぎるので
スケールを
「X:12 Y:3.5 Z:3.5」
にしましょう。
Arrowコンポーネントが引き伸ばされてちょっと目障りですね。
なので・・・
アクターの大きさに影響されずに
Arrowコンポーネントだけ常にデフォルトのサイズに
なるようにしましょう。
BP_Windを開き、
ConstructionScriptに以下の処理を組みます。
X,Y,Z「1」に
自身のアクターのサイズ(X,Y,Z)を割ることで
Arrowコンポーネントのサイズを
常にデフォルトのサイズに設定するようにしています。
コンパイルし、確認すると・・・
Arrowコンポーネントのサイズがアクターのサイズに影響されず
デフォルトのままを保ってるのが分かります。
BEFOR
AFTER
一目瞭然ですね。
~吹き飛ばすアクターの配置~
作成した「BP_SimulatePhysicsObject」の子BPを作成します。
とりあえず
2つの子BPを作成しましょう。
Chair(椅子)とTable(机)です。
StaticMeshコンポーネントにメッシュを追加しましょう。
Chair
Table
レベルに配置します。
当然、Boxコリジョンの中に入れるように配置しましょう。
いざ、プレイ!
よく吹き飛んでいますね!^^
「BP_Wind」で編集可能にしてある
「WindLength」の値を更に大きくすれば
もっと勢いよく吹き飛んでくれます。
それではまた!^^ノシ