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

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

Choose your operating system:

Windows

macOS

Linux

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

ステップ

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

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

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

    GHT2B_1.png

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

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

    GHT2B_2.png

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

    GHT2B_3.png

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

  6. FirstPersonCamera ノードを引き出し Get World Location ノードを追加したら、それをトレースの Start に接続します。

  7. FirstPersonCamera ノードを再び引き出して Get World Rotation ノードを追加します。

    GHT2B_4.png

    ここで FirstPersonCamera の位置からトレースを開始し、 FirstPersonCamera の回転を追加します。

  8. Get World Rotation ノードを引き出して Get Forward Vector を追加したら、それを引き出して Vector * Float ノードを追加し 1500 に設定します。

    GHT2B_5.png

    回転と forward ベクターができて、そこから 1500 (この値はトレースの長さです) だけ外へ伸ばします。

  9. Get World Location ノードを引き出して Vector + Vector ノードを追加し、以下のようにトレース ノードの End に接続します。

    GHT2B_6.png

    FirstPersonCamera の位置をここにして、回転と forward ベクターに合わせて 1500 ユニット伸ばします。

  10. Trace ノード上で、 Draw Debug Type For One Frame に設定します。

    GHT2B_7.png

    これで、ライン トレースを確認するためにインゲームを再生しながら、デバッグ ラインが見えるようになります。

  11. トレースから実行出力ピンをドラッグして Print String ノードを追加します。

    GHT2B_8.png

  12. Out Hit ピンを引き出して Break Hit を検索し、 Break Hit Result ノードを追加します。

    GHT2B_9.png

  13. Break Hit Result Hit Actor ピンを引き出して To String (Object) ノードを追加したら、それを Print String ノードに接続します。

    画像をクリックして全画面表示にします。

    これで、トレースでヒットしたオブジェクトを画面に表示することができます。

  14. [Compile] ボタンをクリックし、エディタで再生し、レベル内のキューブを見ます。

    GHT2B_11.png

    ここでは一人称視点から離れているので、トレースの視野角を見ることができます。

    トレースがキューブにヒットすると、キューブが画面へ印字されるのが分かります。

最終結果

上の例では、提供されている Trace Channel に反応するように設定されている全オブジェクトを返しますが、所定のオブジェクトだけを返したい場合もあると思います。上の例では、トレースで無視するアクタの Array を受け取る Actors to Ignore ピンを使うことができます (無視する個々のアクタを指定しなければなりません) 。

指定した ObjectTypes のみを返す Line Trace by Object を実行することもできます。こうすると、特定のオブジェクトだけをトレース対象にすることができます。

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