在ios编程中检测两个视图的准确碰撞?

时间:2013-11-21 16:41:57

标签: ios objective-c

我正在制作一种“空气曲棍球”类型的游戏,我需要检测手柄和冰球的碰撞。我正在使用CGRectIntersectRect函数,但它不准确,因为当边缘的帧碰撞时,当圆盘和手柄的圆圈尚未碰撞时检测到碰撞。

我希望我明确表达自己的观点,那么,如何能够更准确地实现两个圆形图像的碰撞?

2 个答案:

答案 0 :(得分:0)

我会给UIKit Dynamics碰撞检测引擎一个镜头。请参见示例here

不幸的是它是iOS 7+,所以如果你计划支持iOS 6,你需要寻找另一种解决方案。

答案 1 :(得分:0)

从@ H2CO3获取提示,我实现了我自己的一个函数,它取圆圈1的中心(x1,y1)和圆心2的中心(x2,y2)和两个圆的半径之和(r)为参数。

计算(x1,y1)和(x2,y2)之间的距离,如果距离(例如d)小于r,则圆圈相交。

看一下实现,完美运行:

-(BOOL)WhenCircleDistanceIsLessThanRadiusX1:(int)x1 Y1:(int)y1 X2:(int)x2 Y2:(int)y2 R:(int)r
{
    int d = (int) sqrt(pow((x2-x1),2) + pow((y2-y1),2));
    return(d<=r);
}