2

我对碰撞检测 3D 有疑问。我将高度图制作为 .bmp 图像,并将其加载到游戏中。然后我有一个 .obj 模型作为我的播放器。但是我将如何检查与玩家和地形的碰撞?我在谷歌上搜索了很多,但我找不到它。我知道我必须找到法线和东西,但我不是一个真正优秀的程序员,所以我不知道如何找到法线,如果我有它们,如何使用它们。有人可以用代码解释一下吗?我正在使用opengl绘制地形。

4

1 回答 1

1

我建议您将现有的游戏引擎用于物理。这是因为编写碰撞检测(和碰撞解决)可能非常棘手。尤其是在 3D 中。您还需要非常了解三角学。

如果您不想使用第三方产品并想编写自己的引擎,您的碰撞检测将如下所示:

Contact contact = Engine.getFirstHit(Terrain.getNearestPolygons(player), player);
if (contact.isHit) {
    player.move(player.getVelocity().multiply(contact.getMoveAmount()));
    contact.resolve();
} else {
    player.move(player.getVelocity());
}

在哪里Engine.getFirstHit()以及contact.resolve()将完成所有工作。您可以在碰撞检测wiki 页面上查看参考资料和“另见”部分。

于 2013-06-28T07:41:38.197 回答