Unity c#rooms找到密切的房间

时间:2016-01-20 18:51:06

标签: c# unity3d gameobject

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

我的问题;有没有办法让每一个“房间”,无论是在运行时还是在编辑器中,自己确定哪个“房间”最接近其特定的主要方向?考虑到在给定的方向上可能有几个房间,只有最接近的房间,以及在那个方向上可能没有房间的事实?

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

也;如果这种思维方法存在明显错误,可以选择其他建议。

2 个答案:

答案 0 :(得分:0)

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

理想情况下,您可以在实例化房间时进行N / S / E / W分配。例如:创建R1后,R2将创建到R1的东部,并且也被指定为R1的EastRoom。

否则,因为房间被放置在某个地方。远离下一个单元(水平或垂直)的单位,您可以搜索列表以查看在某个房间的相邻位置放置了哪些房间。 例如:如果已知R1位于(x,y)位置,则搜索全局列表以查找位置为(x + n,y)的房间,并将其指定为R1的EastRoom;在(x-n,y)的房间作为R1的WestRoom等。

我希望有所帮助!

答案 1 :(得分:0)

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