我正在开发一个Java游戏(但开发语言并不重要),包括诸如球或小圆球等圆形对象,现在正在处理碰撞。 我使用一个计时器,所以在每一帧我检查是否碰撞发生。碰撞检测:圆角对象
下面是一个表示对象右上角的图。
的对象的中心由点[0,0]来表示,它的半径是10px的,单位是像素。
现在,如果我的对象(例如,obj_1
)是正方形/菱形(蓝线),找到,如果另一个(obj_2
)碰撞它,我只是要得到他们的坐标,并通过检查Math.abs(obj_1.x - obj_2.x) + Math.abs(obj_1.y - obj_2.y) <= radius
我会知道,如果有碰撞。
但是,这个问题对于圆形(红线)来说更加棘手,因为它需要更多的空间,而且这个占用的空间并没有被直线限制。当然,我将必须舍入一些值(例如在上图中,如果我想检查x = 2
处的碰撞,我将不得不围绕看起来像9.5到10的y值)。但我根本不知道如何得到这个公式。任何帮助将非常感激。
完美,很好,完美解决了它。非常感谢! – Rob 2013-02-12 20:06:12