【发布时间】:2014-06-18 19:42:54
【问题描述】:
我一直在修补一些 Minecraft Bukkit 插件的开发,目前正在做一些事情,我需要能够定义空间的“体积”并确定实体(玩家)何时从该体积外部移动到内部(反之亦然)。
如果我将“音量”限制为盒子,它应该很简单。数据结构可以只维护 X/Y/Z 边界整数(因此总共 6 个整数),并且计算给定两个点(从和移动到)的进入/退出应该只是确定 A)是否所有三个 To 值都是在所有三个范围内,并且 B) 至少一个 From 值在其对应范围之外。
(虽然如果有更好、更高效的存储和计算方式,我会全力以赴。)
但是,如果“体积”不是一个简单的盒子怎么办?假设我有一个形状奇特的房间,并且想要封闭那个房间的体积。我可以单独安排多个“卷”来填充整个空间,但是当一个实体从一个移动到另一个时会导致误报。
之前没有在游戏或 3D 引擎方面工作过,我对如何构建这样的东西一无所知。但在我看来,这很可能是一个已经解决并且已知模式的问题。本质上,我正在尝试:
- 定义一个可以表示形状奇特的空间体积的数据结构(尽管至少基于块坐标)。
- 定义一种算法,在给定移动源和目标的情况下,该算法可以确定移动是否跨越了定义空间的边界。
是否有这方面的既定模式和实践?
【问题讨论】:
标签: java algorithm data-structures 3d minecraft