PredictProjectilePathByTraceChannelを使って、グレネードもどきを投げてみよう!
かなりのお久です。
もう僕の存在なんて忘れてしまったのではないでしょうか??(笑)
そもそも、端(はな)から僕の存在を知っている人がいるかどうかも疑問です(笑)
さて、自虐的な前座はここまで!本題に入りましょう!
↓今回やりたいことはこれ!!
(画像はTheLastOfUsというゲームのものです)
軌道に沿って、物を投げる方法!!
です!
キャラクターBPと投擲物(投げる物)のBPに処理を組んでいきます!
~キャラクターBP~
↓Sceneコンポーネントを追加します。
↓キャラの腹あたりの位置に置きましょう。
このSceneコンポーネントは
物を投げ始めるときの位置です。
変数
VelocityVector・・・デフォルト値「X:1000」「Z:1000」で。
イベントグラフ
↓最終的な完成図です
物を投げるモードの切り替え
軌道計算
ゲーム製作上、Tickはなるべく使わない方がいいのですが(処理負荷的に)
今回はそのような考慮は除いています。
物を投げるモードがONの時、軌道計算を行います。
物を投げる時の方向・速度を計算
軌道計算
PredictProjectilePathByTraceChannelというノードは
指定した位置(StartPos)から指定した速度(LaunchVelocity)で投げた時の軌道を計算してくれます。
PredictProjectilePathByTraceChannelの
各項目についてサラッと解説
StartPos・・・スタート位置
LaunchVelocity・・・投擲速度
TracePath・・・トレースが何かにヒットした時
トレースを貫通させないか(True)
トレースを貫通させるか(False)
ProjectileRadius・・・トレースの球体半径
TraceChannel・・・コリジョンチャンネル
TraceComplex・・・知らん
Actors to Ignore・・・知ってるようで知らん。結局知らん
DrawDebugType・・・トレースの描画方式
DrawDebugTime・・・トレースの描画時間
SimFrequency・・・トレースの球体個数。例)「5」→球体が5個描画される
MaxSimTime・・・トレースの描画距離。値が大きい程トレースの描画距離が延びる。
OverrideGravityZ・・・重力。値が大きいほど、トレースは上に反って描画される。
ざっとこんなもんです。完全に己の勘です。どっか間違ってるかもw
まあよくわかんなかったら試してみてください(笑)
物を投げる
物を投げるモードONの時、投擲可能
Sceneコンポーネントの位置から物を投げる
物を投げる時の速度を設定
VelocityVectorの
「X」の値は、大きい程、遠くまで飛びます。
「Z」の値は、大きい程、高く飛びます。
ただ、「Z」の値があまりにも大きいと前に物を投げたいのに、
後ろに投げてしまう現象が起きますw
色々試して、ちょうどいい値を探ってみて下さい(適当)
~投擲物BP~
↓Granade・・・スフィアコンポーネントにしました。
スフィアのサイズは、軌道に沿ってるか確認したい為、小さめにしてます。
ProjectileMovementは特に何も設定しません。
これで完了です!
先に挙げた動画のようになると思います!
ちなみに・・・
PredictProjectilePathByTraceChannelの
SimFrequencyの値は、「1」以上じゃないと、軌道通りに物が飛んでくれません。
実際試してみると分かるのですが、投げたものが軌道からズレていくと思います。
なので、SimFrequencyに入れる値は「2」以上が良いでしょう。
それではまた!^^ノシ