我正在研究地图生成器,需要检查某个位置是否存在房间,以便排除地雷并生成房间。
该方法目前读取
private void CreateRoom(GameObject room, Vector3 pos)
{
Collider2D roomsAtSpawnPoint = Physics2D.OverlapBox(pos, new Vector2(1f, 1f), 0f, roomLayer);
if (roomsAtSpawnPoint == null)
{
GameObject room_ = Instantiate(room, pos, Quaternion.identity);
roomsAtSpawnPoint = null;
}
}
代码目前已成功运行并生成房间,但仍在其他房间之上生成房间。
问题可能是您只检查了您尝试创建房间的位置周围的 1 x 1 区域。如果房间的长度或宽度大于一个单位,那么房间中心周围的 1 x 1 区域可能不包含另一个房间的碰撞器,但这两个房间仍可能相交。
另一个可能导致该
CreateRoom
功能无法工作的问题是,房间没有正确的碰撞器或不在该roomLayer
层中。