如何在CGRectIntersectsRect if语句中返回相同的对象?

时间:2015-01-15 00:37:56

标签: ios objective-c collision-detection imagenamed

这行代码在iOS 8之前工作,但在更新到iOS 8之后,这行代码不再起作用了。

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

我还有什么其他选择可以实现与旧代码相同的功能。 我需要一个if语句检测两个对象与其中一个具有特定图像的对象的冲突。

我有更多的信息和我想在此链接中制作的游戏代码。链接导致我在更新后知道我的游戏出了什么问题之前做的上一个问题。这是链接...

Collision not working on iphone just ipad Xcode 6.1.1

1 个答案:

答案 0 :(得分:1)

要修复,您需要在游戏中更强大地展示对象。看起来你希望检测到的碰撞是在两个UIView之间,你想知道其中一个视图是否有特定的图像。

考虑这一点的更好方法是检测模型中由视图表示的对象之间的冲突。当视图控制器检测到两个视图重叠时,它可以询问相应的模型,无论是猪还是蓝莓等。在OS8之前,当您将相同的字符串传递给imageNamed时,您依靠操作系统来回答相同的图像。一个更好的设计就是拥有一个模型对象。

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

if (CGRectIntersectsRect(icon1.frame, pig.frame) && icon1.tag == 999) {}