0

这行代码在 iOS 8 之前可以工作,但是在更新到 iOS 8 之后,这行代码就不再工作了。

if (CGRectIntersectsRect(icon1.frame, pig.frame)
    && icon1.image == [UIImage imageNamed:@"BerryBlueberryIphone.png"]) {

我还有什么其他选择可以实现与我的旧代码行相同的目标。我需要一个 if 语句来检测两个对象与具有特定图像的对象之一的碰撞。

我有更多信息和我试图在这个链接中制作的游戏代码。该链接指向我在更新后知道我的游戏出了什么问题之前提出的上一个问题。链接在这里...

碰撞无法在 iphone 上运行,只是 ipad Xcode 6.1.1

4

1 回答 1

1

要解决此问题,您需要对游戏中的对象进行更强的表示。看起来您希望检测的碰撞发生在两个 UIView 之间,并且您想知道其中一个视图是否具有特定图像。

考虑这一点的更好方法是检测模型中由视图表示的对象之间的碰撞。当视图控制器检测到两个视图重叠时,它可以询问相应的模型是猪还是蓝莓或其他什么。在 OS8 之前,您在将相同的字符串传递给 imageNamed: 时依赖于操作系统来回答相同的图像。即使这样,更好的设计也是拥有一个模型对象。

我强烈建议您以这种方式重新考虑您的项目,但作为快速解决方案,您可以为蓝莓图像的 imageViews 保留一个特殊标签(例如 999)。然后碰撞测试可以读取:

if (CGRectIntersectsRect(icon1.frame, pig.frame) && icon1.tag == 999) {}
于 2015-01-15T01:23:31.687 回答