UnityでTPS視点での簡易的な壁透過

今回の課題


UnityでFPS視点キャラを作成するとぶち当たる問題として「壁で画面が何も見えなくなる」という物がありました。

通常時
カメラとキャラの間に壁がある状態

こんな感じで。このままだとプレイヤーへのストレスが大きいので簡単に壁透過?が出来る方法をメモ的な感じで残しておきます。

やり方

①Unityのカメラはレイヤーによって「描画する」「描画しない」を切り分け  られるので描画しないレイヤーを作成する

レイヤー
描画するレイヤーを選べる

②カメラからキャラクターに向かってRayを飛ばし、当たったオブジェクトのレイヤーを描画しないレイヤーに変更する。
 

当たったオブジェクトはobj保持、Layerを8番に変更することでカメラに映らないように設定しています。HITオブジェクトが切り替わったり、何にもHITしなかった場合には保持しているobjのLayerを0番にすることで当たっていないのに描画されないという事を防いでいます。

③これだけで壁オブジェクトを透過することができるようになります。

壁を透過

問題点

このスクリプトは素早く実装することはできますが、オブジェクトを保持し、そのレイヤーを操作する方法の為オブジェクト1つ分しか透過することができません。なので壁が2つ重なっているなどの状況では。。。

最後に

本当の本当に簡単な壁透過方法でした。他に良いやり方を知っている方がいたらTwitterDMなどで教えていただけると幸いです。
@sota_reta2


この記事が気に入ったらサポートをしてみませんか?