作为OpenGL和SDL的CG任务,我想创建一个视频游戏WipeOut的克隆,而不是经典的赛车游戏。已经给出了二维运动的例子,并且非常容易理解;3D的复杂性是道路不是平面的--当车辆接近悬崖或垂直环路时,它应该在y轴上被转换,并旋转到与道路平行的位置。我不知道如何获得和更新这样的信息(平移和轮换道路)。我想要创建一个bezier曲线,其中包含关于它的导数(重叠道路)的信息,并跟踪车辆相对于该曲线的运动,但我不知道这是否是正确(最简单)的方法。顺便说一下,能够跟踪车辆相对于曲线的位置也可以通过限制车辆的距离来解决一些碰撞问题。
当然,这个特性并不是强制性的--我可以保留一条平面道路--但我想了解如何做到这一点。有什么建议吗?
发布于 2016-06-03 09:30:58
我认为最常见的方法是让车辆“上下”运动,实际上是建立一个物理模拟。它不一定是一个非常复杂的,你想要多少现实主义取决于你。
但是仅仅在每一帧,更新速度的汽车向下(重力),直到它到达道路。然后,如果道路有一个向上的斜率,它也将推动汽车向上(通过与汽车碰撞)。
现在你有了一个新的问题,那就是汽车与地面平行的问题。这背后的物理计算要复杂一些。
当你的车撞到地面时,你必须检测到撞击的确切位置(汽车的哪一部分撞到地面了?)然后,利用重力、质量和一些物质特性(所有这些都可以在全局上设定,并假设为简单的简单值),您可以计算出碰撞的反作用力是怎样的。你知道,力会施加在碰撞点上。现在,当你有车的质量中心,碰撞点,地面碰撞产生的力,你可以计算如何旋转汽车。
这只是一个非常粗略的草图,说明我是如何学会以“真实”的方式处理这些事情的。我希望这不是太混乱,如果你有更多的问题,我可以重新研究答案稍后。
https://computergraphics.stackexchange.com/questions/2555
复制相似问题