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