ios - 如何检查两个非矩形图像的交集?

标签 ios iphone

该网站的新用户,但我过去曾使用过它,所以我觉得最好在这里提出我的问题,以获得最好的回复机会。

我正在处理的是一个对象,这是我最新应用程序的 Sprite ,我需要检查它何时与另一个对象接触,在本例中是一个弯曲的隧道。

现在,我知道 CGRectIntersectsRect,但是我看不出它有什么用,就好像我有 2 个 UIImages,它们是“山”的顶部和底部,并且说有弯​​曲的部分,没有怀疑 Sprite 会碰到“矩形”。

我需要的是当 Sprite 撞到实际墙壁时触发的东西,但是我对 Objective-C 的有限了解对我的情况没有帮助。

我想有人会知道我能做些什么来解决这个问题,据我所知这可能是一个简单的解决方案。

提前谢谢大家!

最佳答案

首先,我可能不会自己构建这些基本部分。对于 iOS 7,您可以使用 SpriteKit ,这是内置的。如果您想支持旧版本的 iOS,请查看 cocos2d (它也适用于 iOS 7)。

但对于这个问题,检测任意重叠的一种方法是将两个对象都绘制到缓冲区中并检查是否有任何重叠像素(例如,通过以纯红色绘制一个,另一个以纯绿色绘制,然后寻找同时具有两者的像素)。有关如何在 Core Graphics 中执行此类操作的讨论,请参阅 Clipping a CGRect to a CGPath ,它提供了最简单版本的示例代码(检查矩形和曲线的交集),但可以更普遍地使用相同的方法。请注意,如果您经常这样做,此图可能会变得昂贵,因此通常您首先检查边界矩形是否重叠。这会告诉您是否值得费心仔细观察。

但首先我会看一下 SpriteKit。

关于ios - 如何检查两个非矩形图像的交集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21492436/

相关文章:

ios - 通过从应用程序图标启动,在应用程序完全关闭时处理远程通知

objective-c - Objective-C指针

ios - UIView 动画翻转不工作

iphone - objective-c 中的多日事件

iphone - 从哪里开始制作将 MP3 文件转换为 iphone 有声读物 (M4B) 格式的程序?

ios - 如何在 xcode 中打开现有的本地 pod?

iphone - 如何以非阻塞延迟执行多个操作?

ios - Safari、iPhone 5 和移动浏览器 Webviews 不支持 flex Css

ios - 应用程序未通过代码设计验证。签名无效,包含不允许的权利

ios - Ionic cordova 构建 iOS 不创建构建文件夹并出现 sass gulp 错误