我想在C++中使用Irrlicht引擎制作一个2D游戏。在这个游戏中,你将控制一个小飞船在洞穴中的某种类型。这个洞穴将自动创建(游戏将有随机级别),并将如下所示:
假设我已经有了洞穴内部多边形的点(白色部分)。我应该如何在屏幕上渲染这个形状并使用它来检测碰撞呢?根据我在不同地点所读到的内容,我应该使用三角剖分算法,使用洞穴内部的多边形(白色部分)来绘制洞穴墙壁(黑色部分)的网格。然后,我也可以使用这些网格进行碰撞检测。这真的是最好的方法吗?你知道Irrlicht是否有一些内置功能可以帮助我实现这一点吗?
任何建议都将被采纳。
发布于 2010-02-26 10:16:28
描述如何获得一个任意多边形形状的渲染使用给定的3D引擎是一个相当长的过程。可以说,几乎所有的3D渲染都是以三角形的形式完成的,如果你没有使用工具来生成一个已经由三角形组成的模型,你将需要从你拥有的任何数据中生成三角形。是的,对黑色空间或空白区域进行三角剖分可能是最好的方法。然后,你可以建立一个网格或顶点列表,并呈现这些三角形的方式。然后,列表中的三角形也会加倍,以便进行碰撞检测。
我怀疑Irrlicht是否有任何三角剖分,因为它是非常具体的你的游戏设计,而不是一般的方法,大多数人会采取。(通常,他们有一个工具,允许生成游戏几何学和导航几何学。)它看起来可能是相当棘手的,因为你有那里的形状。
发布于 2010-02-26 10:22:10
一种选择是直接使用地图(图像掩码)来测试碰撞。
例如,
if map_points[sprite.x sprite.y] is black then
collision detected
假设你的对象是图像,它们不是真实的多边形。
如果你使用真实的多边形,你可以对每个物体的形状有一个“点样本”,
检查样本是否有碰撞。
发布于 2010-02-26 10:32:54
要检查一个点是在你的多边形之内还是外面,你可以简单地数过境点。你知道(0,0)在你的多边形之外。现在画一条线,从那里到你的测试点(X,Y)。如果这条线穿过一个奇数的多边形边(例如1),它就在多边形内。如果直线穿过偶数的边(例如0或2),则点(X,Y)在多边形之外。在纸上运行这个算法一次是很有用的,以说服自己。
https://stackoverflow.com/questions/2340691
复制相似问题