Line Trace By Channel は、所定のラインに沿ってコリジョン トレースを実行し、トレースがヒットした最初のオブジェクトを返します。以下では、Single Line Trace By Channel を設定します。
ステップ
-
Starter Content を含めて Blueprint First Person テンプレートを使用してプロジェクトを作成し、そのプロジェクトを開きます。
-
「FirstPersonBP/Blueprints」 フォルダ内で BP_FirstPersonCharacter ブループリントを開きます。
-
グラフ内で右クリックして、 Event Tick ノードを探して追加します。
こうすることで、フレーム毎にトレースが実行されるようになります。
-
実行ピンからドラッグして、Line Trace By Channel ノードを探します。
-
Ctrl キーを押したまま、 First Person Camera コンポーネントをドラッグします。
ここがトレースの開始点となるカメラになります。
-
First Person Camera ノードを引き出し Get World Location ノードを追加したら、それをトレースの Start に接続します。
-
First Person Camera ノードを再び引き出して Get World Rotation ノードを追加します。
ここで First Person Camera の位置からトレースを開始し、 First Person Camera の回転を追加します。
-
Get World Rotation ノードを引き出して Get Forward Vector を追加したら、それを引き出して Vector * Float ノードを追加し 1500 に設定します。
回転と forward ベクターができて、そこから 1500 (この値はトレースの長さです) だけ外へ伸ばします。
-
Get World Location ノードを引き出して Vector + Vector ノードを追加し、以下のように Line Trace By Channel ノードの End に接続します。
First Person Camera の位置をここにして、回転と forward ベクターに合わせて 1500 ユニット伸ばします。
-
Line Trace By Channel ノード上で、 Draw Debug Type を For One Frame に設定します。
これで、ライン トレースを確認するためにインゲームを再生しながら、デバッグ ラインが見えるようになります。
-
Line Trace By Channel から実行出力ピンをドラッグして Print String ノードを追加します。
-
Out Hit ピンを引き出して Break Hit を検索し、 Break Hit Result ノードを追加します。
-
Break Hit Result の Hit Actor ピンを引き出して To String (Object) ノードを追加したら、それを Print String ノードに接続します。
これで、トレースでヒットしたオブジェクトを画面に表示することができます。
-
[Compile] ボタンをクリックし、エディタで再生し、レベル内のキューブを見ます。
トレースがキューブにヒットすると、キューブが画面へ印字されるのが分かります。
最終結果
上の例では、提供されている Trace Channel に反応するように設定されている全オブジェクトを返しますが、所定のオブジェクトだけを返したい場合もあると思います。上の例では、トレースで無視するアクタの Array を受け取る Actors to Ignore ピンを使うことができます (無視する個々のアクタを指定しなければなりません) 。
指定した Object Types のみを返す Line Trace by Object を実行することもできます。こうすると、特定のオブジェクトだけをトレース対象にすることができます。