UnityでFPSをつくる その5-2 [ 壁の衝突判定 ]

2020年5月27日

今回こそ壁の衝突判定を実装します。
実行して壁まで進んでみましょう。

No.223

壁に衝突するとカメラが壁の外を映し出して、画面が真っ暗になってしまいました。
カメラの描画範囲はこれ以上手前に設定できないので、カメラ自体の位置をもう少し手前にします。

No.224

PlayerBody を Player の子オブジェクトから外す。

No.225

Player の Position Z を「50」に変更する。

No.226

PlayerBody を Player の子オブジェクトにする。

No.227
No.228

実行して壁に衝突してみましょう。

No.229

壁の色も黒なのでわかりづらいかもしれませんが、ライトの当たっていない真っ黒な画面は映らなくなりました。

これまでの手順を見て気付かれた方もいらっしゃるかもしれませんが、すでに衝突判定は実装されていました。
新規オブジェクトを作成した際に最初から付いている Collider(コライダー)コンポーネント、この Collider同士の接触を基に衝突判定が行われます。

No.230

しかし、Collider のみでは今回のように Player が壁に衝突した際、それ以上進めなくなる状態にはなりません。
衝突の際の反発を表現するには、どちらか一方のオブジェクトに Rigidbody がアタッチされている必要があります。

No.231

今回では、壁と接触する PlayerBody 自体に Rigidbody は付いていませんが、親オブジェクトである Player に Rigidbody が付いている為、壁のすり抜けが発生していません。

No.232

以上で[ 壁の衝突判定 ]の説明をおわります。おつかれさまでした!

FPS

Posted by kenji