我一直在尝试开发Minecraft Bukkit插件,并且目前正在开发一个需要定义空间“体积”的功能,以及确定实体(玩家)何时从该体积的外部移动到内部(或反之亦然)。
如果我将“体积”限制为方块,则应该很简单。数据结构只需维护X/Y/Z边界整数(因此总共6个整数),并且通过给出两个点(从一个点移动到另一个点)来计算进入/退出,应该只需确定A)所有三个目标值是否在所有三个范围内,以及B)至少一个起始值是否在其对应的范围之外。
(但是,如果有更好的、更高效的存储和计算方法,我很愿意听听。)
然而,如果“体积”不是一个简单的盒子呢?假设我有一个奇怪形状的房间,想要围住该房间的体积。我可以单独安排多个“体积”来填充整个空间,但是当实体从一个“体积”移动到另一个“体积”时,这将导致错误的结果。
由于我以前没有从事过游戏或3D引擎方面的工作,我对如何构建这样的东西感到困惑。但是我想到这很可能是一个已经解决并且有已知的模式的问题。基本上,我正在尝试:
1.定义一个数据结构,该数据结构可以表示一个奇怪形状的空间体积(至少基于块坐标)。
2.定义一种算法,该算法可以在给定移动的源和目的地时,确定移动是否跨越了定义空间的边界。
这方面是否有已知的模式和做法?
如果我将“体积”限制为方块,则应该很简单。数据结构只需维护X/Y/Z边界整数(因此总共6个整数),并且通过给出两个点(从一个点移动到另一个点)来计算进入/退出,应该只需确定A)所有三个目标值是否在所有三个范围内,以及B)至少一个起始值是否在其对应的范围之外。
(但是,如果有更好的、更高效的存储和计算方法,我很愿意听听。)
然而,如果“体积”不是一个简单的盒子呢?假设我有一个奇怪形状的房间,想要围住该房间的体积。我可以单独安排多个“体积”来填充整个空间,但是当实体从一个“体积”移动到另一个“体积”时,这将导致错误的结果。
由于我以前没有从事过游戏或3D引擎方面的工作,我对如何构建这样的东西感到困惑。但是我想到这很可能是一个已经解决并且有已知的模式的问题。基本上,我正在尝试:
1.定义一个数据结构,该数据结构可以表示一个奇怪形状的空间体积(至少基于块坐标)。
2.定义一种算法,该算法可以在给定移动的源和目的地时,确定移动是否跨越了定义空间的边界。
这方面是否有已知的模式和做法?