PredictProjectilePathByTraceChannelを使って、グレネードもどきを投げてみよう!

かなりのお久です。

もう僕の存在なんて忘れてしまったのではないでしょうか??(笑)

そもそも、端(はな)から僕の存在を知っている人がいるかどうかも疑問です(笑)

 

さて、自虐的な前座はここまで!本題に入りましょう!

 

↓今回やりたいことはこれ!!

f:id:Free_Gamer:20190503021749j:plain

(画像はTheLastOfUsというゲームのものです)

 

軌道に沿って、物を投げる方法!!

 

です!

 

youtu.be

 

キャラクターBPと投擲物(投げる物)のBPに処理を組んでいきます!

 

~キャラクターBP~

f:id:Free_Gamer:20190503022509p:plain

コンポーネント

Sceneコンポーネントを追加します。

f:id:Free_Gamer:20190503022717p:plain

↓キャラの腹あたりの位置に置きましょう。

f:id:Free_Gamer:20190503022743p:plain

このSceneコンポーネント

物を投げ始めるときの位置です。

 

変数

f:id:Free_Gamer:20190503024607p:plain

VelocityVector・・・デフォルト値「X:1000」「Z:1000」で。

 

イベントグラフ

↓最終的な完成図です

f:id:Free_Gamer:20190503023112p:plain

 

物を投げるモードの切り替え

f:id:Free_Gamer:20190503023250p:plain

 

軌道計算

ゲーム製作上、Tickはなるべく使わない方がいいのですが(処理負荷的に)

今回はそのような考慮は除いています。

物を投げるモードがONの時、軌道計算を行います。

f:id:Free_Gamer:20190503023402p:plain

物を投げる時の方向・速度を計算

f:id:Free_Gamer:20190503023613p:plain

軌道計算

PredictProjectilePathByTraceChannelというノードは

指定した位置(StartPos)から指定した速度(LaunchVelocity)で投げた時の軌道を計算してくれます。

f:id:Free_Gamer:20190503023902p:plain

 

PredictProjectilePathByTraceChannelの

各項目についてサラッと解説

f:id:Free_Gamer:20190503025835p:plain

StartPos・・・スタート位置

LaunchVelocity・・・投擲速度

TracePath・・・トレースが何かにヒットした時

        トレースを貫通させないか(True)

        トレースを貫通させるか(False)

ProjectileRadius・・・トレースの球体半径

TraceChannel・・・コリジョンチャンネル

TraceComplex・・・知らん

Actors to Ignore・・・知ってるようで知らん。結局知らん

DrawDebugType・・・トレースの描画方式

DrawDebugTime・・・トレースの描画時間

SimFrequency・・・トレースの球体個数。例)「5」→球体が5個描画される

MaxSimTime・・・トレースの描画距離。値が大きい程トレースの描画距離が延びる。

OverrideGravityZ・・・重力。値が大きいほど、トレースは上に反って描画される。

 

ざっとこんなもんです。完全に己の勘です。どっか間違ってるかもw

まあよくわかんなかったら試してみてください(笑)

 

物を投げる

物を投げるモードONの時、投擲可能

f:id:Free_Gamer:20190503024119p:plain

Sceneコンポーネントの位置から物を投げる

f:id:Free_Gamer:20190503024222p:plain

物を投げる時の速度を設定

f:id:Free_Gamer:20190503024259p:plain

VelocityVectorの

「X」の値は、大きい程、遠くまで飛びます。

「Z」の値は、大きい程、高く飛びます。

 

ただ、「Z」の値があまりにも大きいと前に物を投げたいのに、

後ろに投げてしまう現象が起きますw

色々試して、ちょうどいい値を探ってみて下さい(適当)

 

 

~投擲物BP~

コンポーネント

f:id:Free_Gamer:20190503024845p:plain

↓Granade・・・スフィアコンポーネントにしました。

f:id:Free_Gamer:20190503025154p:plain

スフィアのサイズは、軌道に沿ってるか確認したい為、小さめにしてます。

f:id:Free_Gamer:20190503025538p:plain

↓スフィアコンポーネントコリジョン設定

f:id:Free_Gamer:20190503025627p:plain

ProjectileMovementは特に何も設定しません。

f:id:Free_Gamer:20190503025502p:plain

 

これで完了です!

先に挙げた動画のようになると思います!

 

ちなみに・・・

 

PredictProjectilePathByTraceChannelの

SimFrequencyの値は、「1」以上じゃないと、軌道通りに物が飛んでくれません。

実際試してみると分かるのですが、投げたものが軌道からズレていくと思います。

なので、SimFrequencyに入れる値は「2」以上が良いでしょう。

 

それではまた!^^ノシ