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

标签 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

最佳答案

要解决这个问题,您需要在游戏中更好地表示对象。看起来您希望检测的碰撞发生在两个 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/

相关文章:

ios - 沙盒 : Is possible to simulate a failed or interrupted In App Purchase?

swift - 无法将类型 "Game Scene"的值分配给类型 "SKPhysicsContactDelegate"的值

ios - WCSession 发送消息 :replyHandler error code 7014 (WCErrorCodeDeliveryFailed)

objective-c - 调整 NSView 的大小使其小于其 subview ?

ios - 在 Kiwi 测试期间获得 BAD_EXCESS,

ios - 使用 iPhone 模拟器在 openGL ES 上测试手势

Swift SpriteKit 基本接触/碰撞

c# - 在 Unity 中检测重叠二维对象的输入碰撞

iphone - kCTSuperscriptAttributeName 不适用于使用下标和上标

ios - 某些具有特定负载的通知的静默推送通知