質問: 格子状の迷路を探索する3Dゲームを製作しています。 ・実装したいこと 前後左右に1マスずつ移動するプレイヤーが行く手を壁に阻まれたとき、その方向へ移動できなくなるようにしたいです。 壁はアイテムを使用すれば破壊できる仕様です。 ・試したこと プレイヤーの周囲の空間と壁オブジェクトにTrigger状態のBoxColliderを設定し、これらが接触しているならOnTriggerStay()で対応する方向へ移動できないようにし、接触が終わったならOnTriggerExit()移動できるように戻す。 しかし壁が破壊できる仕様のため、コライダがDestroy()される時はOnTriggerExit()が呼び出されないことから、このやり方は適さないようです。 そこで質問なのですが、 上記以外の方法で「ある範囲内に特定のオブジェクトが存在するかどうか」を判定する方法はありますか?
回答: https://docs.unity3d.com/jp/540/ScriptReference/Physics.Raycast.html こちらを使って、確認したい方向にRay(見えない光線)を飛ばして、その方向に障害物があるかどうかを確認するのが割とよくある方法かなと思います。 ``` bool MoveCheck(Vector3 dircetion) { //自身から特定の方向へ10mの間に障害物があるかどうか if (Physics.Raycast(transform.position, direction, 10)) { return true; } else { retrun false; } } ```