Unity c# rooms 寻找接近的房间

Unity c# rooms finding close rooms

我正在开发一款 Unity 游戏。目前它处于基本状态,但目标是以图形方式在某种程度上复制旧式 telnet MUD 的游戏玩法。此阶段的地图构建是手动的,而不是自动的,尽管这是计划在以后进行的。我可以轻松地将房间放置在二维网格中,每个房间在 x 轴和 y 轴上彼此相距若干个完整单位。 我现在有几个“房间”游戏对象,它们每个都有一个 C# 脚本(我们称脚本为“a_room.cs”)。每个脚本都有一个 public gameObject 变量,用于表示该特定“房间”的北、南、东和西房间。

我的问题;有没有办法让每个“房间”,无论是在运行时还是在编辑器中,自行计算出哪些“房间”最接近其每个特定的主要方向?考虑到在给定方向上可能有多个房间并且只需要最近的房间,以及该方向上可能没有房间的事实?

我不一定需要代码作为答案,逻辑和重要功能就是我所追求的。

还有;如果这种思维方法有明显的错误,欢迎提出替代建议。

您可以拥有一个包含所有这些 a_room 对象的全局列表。

理想情况下,您可以在实例化房间本身时进行 N/S/E/W 分配。例:创建R1后,在R1的东边创建R2,也指定为R1的EastRoom

否则,由于房间放置在与下一个房间相距某个 'n' 个单位的位置(水平或垂直),您可以搜索列表以查看哪些房间放置在特定位置的相邻位置房间。 Ex:如果已知R1在位置(x,y),则在全局列表中搜索一个位置为(x+n,y)的房间并将其指定为R1的EastRoom; (x-n, y)的房间作为R1的WestRoom等

希望对您有所帮助!

如果游戏对象已经装箱,那么您可以按位置 (x,y,z) 在列表中对它们进行排序,一旦它们被排序,只需将 N、S、E、O 设置为中的下一个对象列表...