objective-c – iOS中不均匀形状的碰撞检测

objective-c – iOS中不均匀形状的碰撞检测,第1张

概述嗨,大家好, 我正在为iPad进行拖放活动.我有一个矩形.png图像(参见名为obj2的图像).当我将obj1仅拖动到矩形的黑色部分时,它应该做出反应. if (CGRectIntersectsRect(obj1.frame, obj2.frame)){ NSLog(@" hit test done!! ");} 现在,即使在透明区域,这段代码也会进行热门测试.如何防止这种情况发生? 嗨,大家好,

我正在为iPad进行拖放活动.我有一个矩形.png图像(参见名为obj2的图像).当我将obj1仅拖动到矩形的黑色部分时,它应该做出反应.

if (CGRectIntersectsRect(obj1.frame,obj2.frame)){    NSLog(@" hit test done!! ");}

现在,即使在透明区域,这段代码也会进行热门测试.如何防止这种情况发生?

提前致谢.

问候,
兰詹

解决方法 对于像您的具体示例(三角形和圆形)这样简单的内容,DavIDRönnqvist提供的链接非常有用.你应该看看它看到一些可用的工具.但对于一般情况,最好的选择是剪切,绘图和搜索.

有些背景,请参阅Clipping a CGRRect to a CGPath.

首先,创建一个仅Alpha的位图图像.这在上面的链接中解释.

接下来,使用CGContextClipToMask()将上下文剪辑到其中一个图像.

现在,将您的其他图像绘制到上下文中.

最后,搜索位图数据以查找任何彩色像素(请参阅上面的链接以获取示例代码).

如果任何像素着色,则存在一些重叠.

另一种类似的方法(可能实际上更快)是将每个图像绘制到其自己的仅Alpha CGBitmapContext中.然后遍历每个上下文中的像素,看看它们是否同时都是> 128.

总结

以上是内存溢出为你收集整理的objective-c – iOS中不均匀形状碰撞检测全部内容,希望文章能够帮你解决objective-c – iOS中不均匀形状的碰撞检测所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1082084.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存