这行代码在 iOS 8 之前是有效的,但是在更新到 iOS 8 之后这行代码就不再有效了。
if (CGRectIntersectsRect(icon1.frame, pig.frame)
&& icon1.image == [UIImage imageNamed:@"BerryBlueberryIphone.png"]) {
我还有哪些其他选择可以实现与我的旧代码行相同的效果。 我需要一个 if 语句来检测两个对象与具有特定图像的对象之一的碰撞。
我在这个链接中有更多信息和我想制作的游戏代码。该链接指向我在更新后知道我的游戏出了什么问题之前提出的一个问题。这是链接...
最佳答案
要解决这个问题,您需要在游戏中更好地表示对象。看起来您希望检测的碰撞发生在两个 UIView 之间,并且您想知道其中一个 View 是否具有特定图像。
考虑这一点的更好方法是检测模型中由 View 表示的对象之间的碰撞。当 View Controller 检测到两个 View 重叠时,它可以询问相应的模型是 pig 还是蓝莓或其他什么。在 OS8 之前,当将相同的字符串传递给 imageNamed: 时,您依赖操作系统来回答相同的图像。即使那样,更好的设计也应该是拥有一个模型对象。
我强烈建议您以这种方式重新考虑您的项目,但作为快速解决方案,您可以为蓝莓图像的 imageView 保留一个特殊标签(例如 999)。那么碰撞测试可以读取:
if (CGRectIntersectsRect(icon1.frame, pig.frame) && icon1.tag == 999) {}
关于ios - 我如何在 CGRectIntersectsRect if 语句中返回相同的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27955038/