我试图创建一个新的游戏,其中一辆车沿着地面行驶,但也有能力使用推进器暂时空降。我比较擅长编写Java,C,C++等,所以我不认为这应该是一个问题(认为游戏的第一次迭代是在Java中) 。我的问题是我从头开始,并且无法想象地形成障碍的方式,所以车辆不会穿过它。我怎么能让他们受到伤害?地形和碰撞在游戏中
过去人们已经指示我到副本岛的源头,因为它已经包含了它,我看到了整个碰撞系统,但到目前为止我还没有弄清楚它,我希望有人会愿意帮我一把。
谢谢
-Roflha
我试图创建一个新的游戏,其中一辆车沿着地面行驶,但也有能力使用推进器暂时空降。我比较擅长编写Java,C,C++等,所以我不认为这应该是一个问题(认为游戏的第一次迭代是在Java中) 。我的问题是我从头开始,并且无法想象地形成障碍的方式,所以车辆不会穿过它。我怎么能让他们受到伤害?地形和碰撞在游戏中
过去人们已经指示我到副本岛的源头,因为它已经包含了它,我看到了整个碰撞系统,但到目前为止我还没有弄清楚它,我希望有人会愿意帮我一把。
谢谢
-Roflha
什么是您使用来开发游戏?一个引擎或图形库?基本上有三个层次(我喜欢考虑它们):图形库,图形引擎和游戏引擎。
图形库是相当多的 低的水平,你可以得到:OpenGL或DirectX的 。当你想绘制出 您的地形,你会被绘制为 三角形的网格,并定义这些三角形的顶点 等
图形引擎是最重要的是 一层。那些例子(至少C++ )是Ogre3D,Horde3D和 Irrlicht。他们会照顾 许多较低级别的命令,并且 让您专注于更高级别角度的更多 的图形。
游戏引擎几乎将 照顾任何图形相关。 这些(又是C++)的例子是 Unity和UDK。他们一般可以做 很多游戏编程为 你。你可能会在建模程序 (3dsmax等)中绘制你的 地形,将其导出为 的格式,然后引擎会将它sl到 并准确知道如何处理它。
我玩过所有三种,并找到图形库最有趣。但是,他们可能会花最长时间来制作一款游戏。他们还涉及更多的数学(线性代数)。
就地形碰撞检测而言。你必须知道组成这个地形的三角形。如果您正在使用游戏引擎,您应该能够在某种“场景节点”中存储地形的网格和角色的网格,并且它将自动处理碰撞检测。但是,如果你正在处理一切自己,有很多流行的算法来做到这一点:
An excellent article on bounding sphere collision detection
我写了一个样本的OpenGL程序,基本上可以让一个角色,这是由边界框表示,走动的地形,这需要碰撞检测。让我知道你是否对它的工作原理更感兴趣。
您可以处理秋天损害几种方法:
我从头开始编写所有的东西,并使用OpenGL作为图形。整个包围球的事情看起来是我正在寻找的东西。我对你的样品非常感兴趣。这听起来像我现在试图用这些车辆实施的。至于秋天的伤害,我打算有一些引力常数(如你所说的那么现实),但我仍然不知道什么时候加速游戏对象(找出他们没有接触地面的时候) – 2011-04-15 22:11:50
那么我可以详细说明我的碰撞检测,如果你想。不过,我使用的是盒子,而不是球体。我的地形是作为一个高度图来实现的。您可以通过使用Google搜索“高度图”了解遍布互联网的全部内容。我检查是否与高度图碰撞的方式是找出我的角色垂直对齐哪个三角形,使用这些三角形的顶点计算每个三角形所在平面的方程,然后插入将字符的x,z坐标转换为平面方程并求解y。这给出了地图中特定点的高度。 – 2011-04-15 22:16:18
现在我的地形是随机生成的(我提到它是2d)。我可以做很多和你所说的一样的事情,除非我只能用x来解决y。我看到的问题是,我的地形也是可变形的......呃,与这个结合起来并不会很有趣。每当我变形地形时,我都需要重新计算这个计划,对吗? – 2011-04-15 22:45:04
你可能也想尝试Nvidia PhysX,除了它的名字所暗示的那些(你想要模拟汽车物理学是我想到的),还有很多功能暴露在某些实用程序中,例如碰撞检测,四元数学等。
我将它与Ogre,一个开源图形引擎(到目前为止; - )......在OpenGL-DirectX和Linux-Microsoft之间切换相对简单)这也有很多内幕。
既然你已经知道如何编写代码,我会建议上述作为可行的,而不是替代品,但开放性的来源;所以你只能重新发明你想要的轮子的部分。
您的游戏是2D还是3D?我假设你以任何方式使用OpenGL? – Maximus 2011-04-15 04:10:08
@Maximus它将是2D,我将使用OpenGL。 – 2011-04-15 19:44:22