【问题标题】:How to detect view collision in a breakout app?如何检测突破应用程序中的视图冲突?
【发布时间】:2015-05-13 18:44:31
【问题描述】:

所以我正在快速开发一个 Breakout 应用程序。我目前有一个球,它是一个 UIView 和一个 cornerRadius = 20.0 来模拟一个球。我还有一个桨,它是另一个 UIView 和一个较小的 cornerRadius = 5.0。我以编程方式制作了九个红色视图,每个视图大小为 50x50 单位。我的球、桨和块元素具有碰撞和运动机制。`var dynamicAnimator: UIDynamicAnimator!

var pushBehavior: UIPushBehavior!

var collisionBehavior: UICollisionBehavior!

var ballDynamicBehavior: UIDynamicItemBehavior!

var paddleDynamicBehavior: UIDynamicItemBehavior!

var blockBehaviors: UIDynamicItemBehavior!

我的问题是,球与积木相撞,但我不知道如何检测球是否击中积木,但我知道如何使视图出现和消失(给出视图与视图颜色匹配的背景色,并将其从块行为中删除。基本上,我想知道如何检测两个视图何时通过.function 或其他方式发生碰撞。

如果我还可以添加多个级别,那也很棒,哈哈。

【问题讨论】:

    标签: ios swift uiview


    【解决方案1】:

    UICollisionBehavior 需要一个采用 UICollisionBehaviorDelegate 协议的委托。这个委托有一个方法collisionBehavior,只要检测到碰撞就会被调用。

    例如:

    var collisionBehavior: UICollisionBehavior!       // create a UICollisionBehavior as you have done
    collisionBehavior.addItem(ball)                   // add your items to it
    collisionBehavior.addItem(block)                  // (faster to do this in the init step with `items` argument)
    collisionBehavior.collisionDelegate = myDelegate  // give it a delegate which adopts UICollisionBehaviorDelegate
    dynamicAnimator.addBehavior(collisionBehavior)    // add the behavior to your animator
    

    然后为您的委托类实现func collisionBehavior。通常人们只是将UIViewController 本身用作代表,因此上面的行将显示为collisionBehavior.collisionDelegate = self

    请参阅此处的“使对象响应碰撞”以获取简短的教程:http://www.raywenderlich.com/76147/uikit-dynamics-tutorial-swift

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多