Ios 如何在突破应用程序中检测视图冲突?
所以我正在swift中开发一个突破应用程序。我现在有一个球,它是一个Ios 如何在突破应用程序中检测视图冲突?,ios,swift,uiview,Ios,Swift,Uiview,所以我正在swift中开发一个突破应用程序。我现在有一个球,它是一个UIView,用cornerRadius=20.0来模拟一个球。我还有一个桨,它是另一个UIView,具有更小的cornerRadius=5.0。我以编程方式创建了九个红色视图,每个视图都有50x50个单位大。我的球、桨和挡块元素都有碰撞和运动机制 var pushBehavior: UIPushBehavior! var collisionBehavior: UICollisionBehavior! var ballDyn
UIView
,用cornerRadius=20.0
来模拟一个球。我还有一个桨,它是另一个UIView
,具有更小的cornerRadius=5.0
。我以编程方式创建了九个红色视图,每个视图都有50x50个单位大。我的球、桨和挡块元素都有碰撞和运动机制
var pushBehavior: UIPushBehavior!
var collisionBehavior: UICollisionBehavior!
var ballDynamicBehavior: UIDynamicItemBehavior!
var paddleDynamicBehavior: UIDynamicItemBehavior!
var blockBehaviors: UIDynamicItemBehavior!
我这里的问题是,球与块碰撞,但我不知道如何检测球是否击中块,但我知道如何使视图出现和消失(为视图提供与视图颜色匹配的背景色,并将其从blockBehaviors中删除。基本上,我想知道如何通过.function或其他方式检测两个视图何时发生冲突
如果我还可以添加多个级别,那也太棒了,哈哈。一个
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
请参阅此处的“使对象对碰撞作出响应”,以获得一个好的简短教程: