【发布时间】:2011-05-26 22:40:30
【问题描述】:
我创建了一个非常简单的数值模拟,它模拟一个物体以某个角度从建筑物中抛出,当物体撞到地面时,模拟停止。现在我想添加碰撞检测。我该怎么做呢? 我知道我需要找到物体(球)撞击地面的确切时间,以及 x 和 y 方向的速度,以及物体撞击地面时的位置,我必须添加参数这说明球在撞击时会反弹多少。但我不知道该怎么做。我知道有多种检测碰撞的方法,但由于我是新手,所以最好的方法是最容易理解的。
【问题讨论】:
我创建了一个非常简单的数值模拟,它模拟一个物体以某个角度从建筑物中抛出,当物体撞到地面时,模拟停止。现在我想添加碰撞检测。我该怎么做呢? 我知道我需要找到物体(球)撞击地面的确切时间,以及 x 和 y 方向的速度,以及物体撞击地面时的位置,我必须添加参数这说明球在撞击时会反弹多少。但我不知道该怎么做。我知道有多种检测碰撞的方法,但由于我是新手,所以最好的方法是最容易理解的。
【问题讨论】:
建立一个坐标系,地面位于 y=0。跟踪球飞行时的坐标,然后检查它何时 y=0,也就是它撞击地面的位置。您还可以在球移动时跟踪 x 和 y 速度。
使用物理技能。 This 是一个很好的教程。如果你有的话,我推荐 Halliday、Resnick 和 Walker 的 Fundamentals of Physics。他们有一个非常好的章节。
【讨论】:
如果您只是在寻找数学,您可以为其编写 C 代码。我发现这个很有帮助。 Math Models
【讨论】:
碰撞检测只涉及确定 2 个对象之间的距离。
如果你只对物体与地面的碰撞感兴趣,你可以使用:
if(object.y <= ground.y) {
//collision occurred
}
要在对象之间进行碰撞,您可以遍历所有对象并以相同的方式相互比较。
【讨论】: