首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >生成2D游戏世界的技术

生成2D游戏世界的技术
EN

Stack Overflow用户
提问于 2010-02-26 09:51:08
回答 3查看 1.8K关注 0票数 3

我想在C++中使用Irrlicht引擎制作一个2D游戏。在这个游戏中,你将控制一个小飞船在洞穴中的某种类型。这个洞穴将自动创建(游戏将有随机级别),并将如下所示:

假设我已经有了洞穴内部多边形的点(白色部分)。我应该如何在屏幕上渲染这个形状并使用它来检测碰撞呢?根据我在不同地点所读到的内容,我应该使用三角剖分算法,使用洞穴内部的多边形(白色部分)来绘制洞穴墙壁(黑色部分)的网格。然后,我也可以使用这些网格进行碰撞检测。这真的是最好的方法吗?你知道Irrlicht是否有一些内置功能可以帮助我实现这一点吗?

任何建议都将被采纳。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-26 10:16:28

描述如何获得一个任意多边形形状的渲染使用给定的3D引擎是一个相当长的过程。可以说,几乎所有的3D渲染都是以三角形的形式完成的,如果你没有使用工具来生成一个已经由三角形组成的模型,你将需要从你拥有的任何数据中生成三角形。是的,对黑色空间或空白区域进行三角剖分可能是最好的方法。然后,你可以建立一个网格或顶点列表,并呈现这些三角形的方式。然后,列表中的三角形也会加倍,以便进行碰撞检测。

我怀疑Irrlicht是否有任何三角剖分,因为它是非常具体的你的游戏设计,而不是一般的方法,大多数人会采取。(通常,他们有一个工具,允许生成游戏几何学和导航几何学。)它看起来可能是相当棘手的,因为你有那里的形状。

票数 3
EN

Stack Overflow用户

发布于 2010-02-26 10:22:10

一种选择是直接使用地图(图像掩码)来测试碰撞。

例如,

代码语言:javascript
运行
复制
if map_points[sprite.x sprite.y] is black then
   collision detected

假设你的对象是图像,它们不是真实的多边形。

如果你使用真实的多边形,你可以对每个物体的形状有一个“点样本”,

检查样本是否有碰撞。

票数 1
EN

Stack Overflow用户

发布于 2010-02-26 10:32:54

要检查一个点是在你的多边形之内还是外面,你可以简单地数过境点。你知道(0,0)在你的多边形之外。现在画一条线,从那里到你的测试点(X,Y)。如果这条线穿过一个奇数的多边形边(例如1),它就在多边形内。如果直线穿过偶数的边(例如0或2),则点(X,Y)在多边形之外。在纸上运行这个算法一次是很有用的,以说服自己。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2340691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档