我创建了一个非常简单的数值模拟,模拟了一个物体以某个角度从建筑物上抛出,当物体撞击地面时,模拟停止。现在我想添加碰撞检测。我该怎么做呢?
我知道需要找到物体(球)撞击地面的确切时间,以及x和y方向的速度,物体撞击地面时的位置,还要添加参数来说明球在撞击后会反弹多少。但我不知道该如何去做。我知道有各种各样的碰撞检测方法,但由于我是新手,最易懂的方法是最好的。
建立一个坐标系,将地面设为y=0。跟踪球飞行时的坐标,然后检查它何时达到y=0,这就是它落地的位置。您还可以跟踪球移动时的x和y速度。
运用物理技能。这个是一个很好的教程。如果您有条件,我推荐Halliday、Resnick和Walker的《物理学基础》。他们在这方面有非常好的章节。
碰撞检测简单地涉及确定两个对象之间的距离。
如果您只对物体与地面之间的碰撞感兴趣,可以使用:
if(object.y <= ground.y) {
//collision occurred
}
要在对象之间进行碰撞检测,您可以循环遍历所有对象,并以相同的方式进行比较。