首先,我的问题并不特定于C#或XNA,但我的代码示例将使用它们。
我目前正在尝试制作一个Pong克隆,并遇到了与碰撞检测有关的问题。
每个对象基本上都有特定的速度(即Vector2),位置(也是Vector2)和速度(仅是float)。在每个对象的Update()调用中,位置会以以下方式更改:
Velocity.Normalize();
Position += Velocity * Speed;
起初,我只是通过两个对象的矩形简单地调用Intersects()来检查它们之间是否存在碰撞。但很快我意识到,我不能仅仅检查物体是否当前与另一个物体发生碰撞,而是要检查物体是否在其路径上与其他物体发生过碰撞。仅仅检查两个物体是否当前发生碰撞会导致当速度过高时,球穿过挡板。
我尝试了不同的方法来解决这个问题,但似乎都没有奏效。我只需要一种方法来检查两个对象是否在它们的路径上发生碰撞,如果发生碰撞,是水平、垂直还是两者都有(以相应地改变球的速度)。
我并不一定立即需要解决方案,也许只需要基本的实现思路,我会自己编码。
感谢您的时间。