Objective c iOS中不均匀形状的碰撞检测
我正在为iPad进行拖放操作。我有一个矩形PNG图像(参见名为obj2的图像)。当我只在矩形的黑色部分拖动obj1时,它应该会做出反应Objective c iOS中不均匀形状的碰撞检测,objective-c,ios,ipad,Objective C,Ios,Ipad,我正在为iPad进行拖放操作。我有一个矩形PNG图像(参见名为obj2的图像)。当我只在矩形的黑色部分拖动obj1时,它应该会做出反应 if (CGRectIntersectsRect(obj1.frame, obj2.frame)) { NSLog(@" hit test done!! "); } 现在,这段代码即使在透明区域也要进行命中测试。如何防止这种情况发生?对于像您的具体示例(三角形和圆形)这样简单的事情,David Rönnqvist给出的链接非常有用。你肯定应该看看它,看
if (CGRectIntersectsRect(obj1.frame, obj2.frame))
{
NSLog(@" hit test done!! ");
}
现在,这段代码即使在透明区域也要进行命中测试。如何防止这种情况发生?对于像您的具体示例(三角形和圆形)这样简单的事情,David Rönnqvist给出的链接非常有用。你肯定应该看看它,看看一些可用的工具。但对于一般情况,最好的选择是剪辑、绘制和搜索 有关背景信息,请参见 首先,创建一个纯alpha位图图像。以上链接对此进行了解释 接下来,使用
CGContextClipToMask()
将上下文剪辑到一个图像中
现在,在上下文中绘制另一个图像
最后,在位图数据中搜索任何彩色像素(请参见上面的链接以获取示例代码)
如果任何一个像素是彩色的,那么就有一些重叠
另一种类似的方法(实际上可能更快)是将每个图像绘制到其自身的纯alpha CGBitmapContext中。然后在每个上下文中遍历像素,看看它们是否同时都大于128。当您对它们使用
CGRect
时,它们都将是矩形。您需要使用不同的方法。