Single Line Trace (レイキャスト) by Channel を使用する

この操作ガイドでは Single Line Trace by Channel ブループリント ノードを使って Visibilityチャンネルに反応するヒットした最初のアクタを戻し、名前をプリントする方法を説明します。

コンテンツ

Line Trace By Channel は、所定のラインに沿ってコリジョン トレースを実行し、トレースがヒットした最初のオブジェクトを返します。以下では、Single Line Trace By Channel を設定します。

ステップ

  1. Starter Content を含めて Blueprint First Person テンプレートを使用してプロジェクトを作成し、そのプロジェクトを開きます。

  2. 「FirstPersonBP/Blueprints」 フォルダ内で BP_FirstPersonCharacter ブループリントを開きます。

    01_OpenFPCharacterBP.png

  3. グラフ内で右クリックして、 Event Tick ノードを探して追加します。

    Copy Node Graph

    02_AddEventTick.png

    こうすることで、フレーム毎にトレースが実行されるようになります。

  4. 実行ピンからドラッグして、Line Trace By Channel ノードを探します。

    Copy Node Graph

    03_AddLineTrace.png

  5. Ctrl キーを押したまま、 First Person Camera コンポーネントをドラッグします。

    Copy Node Graph

    04_DragFPCamera.png

    ここがトレースの開始点となるカメラになります。

  6. First Person Camera ピンを引き出しh、Get World Location**ノードを検索して追加します。Get World Location ノードの Return Value ピンを Line Trace By Channel ノードの Start** ピンに接続します。スクリプトは以下のようになります。

    Copy Node Graph

    05_AddWorldLocation.png

  7. First Person Camera ピンを再び引き出し、Get World Rotation ノードを検索して追加します。

    Copy Node Graph

    06_AddWorldRotation.png

    この場合、First Person Camera の位置からトレースを開始し、First Person Camera の回転を取得していることになります。

  8. Get World Rotation ノードの Return Value ピンを引き出し、Get Forward Vector ノードを検索して追加します。Get Forward VectorReturn Value ピンを引き出し、Multiply 演算子ノードを検索して追加します。以下のように、1500 に設定します。

    Copy Node Graph

    07_AddFwdVector.png

    回転と、そこから外側に 1500 だけ伸びた前方ベクトルを取得しています(この値はトレースの長さです)。

  9. Get World Location ノードの Return Value ピンを引き出し、Add 演算子ノードを検索して追加してください。Add ノードの B Vector ピンを Multiply ノードの Return Value ピンに接続し、Add ノードの Return Value ピンを Line Trace By Channel ノードの End** ピンに接続します。スクリプトは、以下のようになります。

    Copy Node Graph

    08_BPScript.png

  10. ここでは、ファーストパーソンカメラの位置を、その回転と前方ベクトルに基づき1500ユニット分、外側に伸ばしていることになります。

  11. Line Trace By Channel ノードで Draw Debug TypeFor One Frame に設定します。

    09_ChangeDrawDebugType.png

    これにより、ゲーム内でプレイ中にデバッグラインを表示し、我々のライントレースを確認することができます。

  12. Line Trace By Channel ノードの Execution out pin を引き出し、Print String ノードを検索して追加します。

    Copy Node Graph

    10_AddPrintString.png

  13. Line Trace By Channel ノードの Out Hit ピンを引き出し、Break Hit Result ノードを検索して追加します。

    Copy Node Graph

    11_AddBreakHitResult.png

  14. Break Hit Result ノードの Hit Actor ピンを、Print String ノードの In String ピンに接続します。スクリプトは以下のようになります。

    Copy Node Graph

    12_BPScriptFinal.png

    これにより、トレースでヒットしたオブジェクトをデバッグプリントすることができます。

  15. Click Compile and Save buttons.

    13_SaveCompileButton.png

最終結果

上記の例では、提供された Trace Channel に応答するように設定されているすべての Object を返しますが、特定の Object のみを返したい場合もあります。上記の例では、Actors to Ignore ピンを使用して、トレースによって無視されるべきアクタの Array を取ることができます (これは、無視する各アクタを指定する必要があることを意味します)。

トレースがキューブに当たると、そのキューブが画面に表示されるのがわかると思います。

また、指定された Object Types のみが返される Line Trace By Object を実行することもできます。これにより、特定のオブジェクトのセット (トレースに含まれるもののみ) をターゲットにすることができます。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル