我使用OpenGL和LWJGL跟踪ThinMatrix的游戏开发教程,并坚持在我的游戏中实现碰撞检测。我已经提到了网络上的这些网页 -在Java中实施扫描和修剪
但我不知道任何C++,不能转换的代码。我将如何使用java中的扫描和修剪来实现宽相碰撞检测?
我使用OpenGL和LWJGL跟踪ThinMatrix的游戏开发教程,并坚持在我的游戏中实现碰撞检测。我已经提到了网络上的这些网页 -在Java中实施扫描和修剪
但我不知道任何C++,不能转换的代码。我将如何使用java中的扫描和修剪来实现宽相碰撞检测?
你试图达到的目标不是很微不足道,可能太多回答这里,但让我们尝试描述一些基本步骤,让你开始。
就我记得ThinMatrix的系列教程而言,首先您必须首先实施Axis-Aligned Bounding Boxes(AABB's),然后将它们包裹在您的实体中,因为您需要那些用于宽相检测。您可以简单地加载一个1x1x1
立方体模型并相应地缩放转换矩阵,但您将如何缩放它?
在解析obj文件时,请记住每个模型的最小和最大顶点位置(minX, minY, minZ, maxX, maxY, maxZ
)。
然后你必须重新调整你的1x1x1边框,所以计算你边框scaleX, scaleY, scaleZ
,并确保它尊重原有实体的规模,以及:
float scaleX = (maxX - minX) * model.getScale();
float scaleY = (maxY - minY) * model.getScale();
float scaleZ = (maxZ - minZ) * model.getScale();
你会再有计算transformationMatrix并将您的比例值应用于多维数据集。 ThinMatrix实现了方法Maths.createTransformationMatrix(...)
,您必须使用三个新参数进行扩展。
在一个点或另一个你最终与具有AABB与此类似:
从那里,我建议你到现有的物理库整合,如:
后者实现了Java中链接论文中描述的算法:SweepAndPruneAlgorithm.java。