2

好的,我有一些程序生成的地形(大致基于http://www.swiftless.com/terraintuts.html

我有一个茶壶“飞机”,你可以在里面飞来飞去(第三人称相机)

基本上,目标是飞过山谷等......而不会坠毁。

我无法解决的是如何计算您是否与地形发生碰撞?

有任何想法吗?

4

2 回答 2

3

地形图特别容易测试碰撞,因为地形图是从 2d 点 (x, y) 到该点的地形高度 TERRAIN[x, y] 的地图。给定您的茶壶平面位于 (t_x, t_y, t_z),只需根据 (t_x, t_y) 处的地形高度测试其高度。也就是说,如果 t_z < TERRAIN[x, y],那么你已经崩溃了。您可以根据地形测试多个点(可能是位于茶壶中心的立方体的角),以获得更准确的结果。根据地形图的粗糙度,您可以选择附近的网格点,或进行线性插值以计算任意点的地形高度。

于 2011-12-03T13:17:00.983 回答
0

有整本专门用于碰撞检测的书籍,但在我正在开发的一个简单游戏中,我通过为定义其边界球体的每个实体创建一个半径来处理碰撞检测。在每一帧中,将所有实体与所有其他实体进行比较以找出它们之间的距离,如果距离小于两个实体的组合半径,则记录一次碰撞。

为此,我将每个类(例如火箭、怪物、玩家、树等)作为实体类的子类,该实体持有碰撞发生时的逻辑,这意味着当火箭发射时它可以杀死怪物,但只会烧毁一棵树(假设我有火箭和树实体)。

我遵循的一本很好的书,它更详细地解释了其中的很多内容:

http://www.amazon.co.uk/Beginning-OpenGL-Game-Programming-Second/dp/159863528X/ref=dp_ob_title_bk

于 2011-12-03T13:10:31.583 回答