碰撞检测3D有问题。我将高度图制作为.bmp图像,并将其加载到游戏中。然后我有一个.obj模型作为我的播放器。但是我如何检查与玩家和地形的碰撞?我在谷歌搜索了很多,但我找不到它。我知道我必须找到法线和东西,但我不是一个非常好的程序员,所以我不知道如何找到法线,如果我有它们,如何使用它们。有人可以用代码解释一下吗?我正在使用opengl绘制地形。
答案 0 :(得分: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()
将完成所有工作。您可以查看参考文献和"另见" Collision Detection维基页面上的部分。