LineTraceを使用した際に、BOXを設置して当たり判定を付けたいと思い作成しました。
コリジョンのX軸をLineTraceが当たった部分まで伸びる仕様です。
Playerに当たった時
ブログ用2 https://t.co/scmYsZff6o
— ぶっさん (@Bussan_desu) 2015, 12月 13
つまりこういうことです。
で、この画像を意気揚々と作っていた時にBoxTraceByChanel使えば良くね?という圧倒的発想力で問題は解決したのですが、
今回のBPの利点としてコリジョンのスケール管理が簡単になります。(ビューポートでYZ軸のスケールのチェックが簡単に出来る。)
あとは・・・うん・・・
ブループリントの作成
Actorを作成しBoxCollisionを設置します。サイズの変更の際に、
シェイプを弄る必要があります。(拡大縮小を使うとおかしいことになります。)
次にArrowを設置します。
X軸にArrowを設置します。
今回はチェックしやすいようにConstructScriptにBPを組みます。
Arrowの位置と前方向のスケールを取って画像のように組みます。
次にBoxのスケールのX軸をLineTraceにあったところまで伸ばすようにします。
まずスケールを変更します。
LineTraceが当たったLocationを取りArrowのLocationで引き算をします。数値的にマイナスになると不便なのでLengthを取りました。ここで2を割ります。これをMakeVextorを出しX軸に入れます。
Y、Z軸にはビューポートで変更したスケールの数値を入れたいのでScaleを取りBreakしてYZ軸に入れました。
これで以下の画像のようになります。位置がおかしいので変更します。
あたったLocationと元のLocationの中間地点に設置します。
先ほどの2で割った数値でMakeVectorのX軸に入れます。X軸しか使わないためYZ軸には0を入れました。これをArrowのRelativeLocationを出し足し合わせます。
これで完成です。
これをイベントグラフに持って行きTickで繋げ、AddActorRotationを出し、BoxにOverlapした時のイベントを書くと2つ目の動画のようになります。
こっちのほうがスケール管理しやすい。うん、きっとし易い
しかし、これでスコープ覗いた時に敵を一気に判別出来るような処理もかけるかもしれませんね。
BoxLineTraceあんまり使ってないので使ってる人がいたら、是非こっち使ったほうが楽なんだけど~wと煽りに来てください。
以上