没有调用CollisionBehavior

时间:2016-08-12 20:20:05

标签: swift uikit uicollisionbehavior

我一直试图让这个CollisionBehavior func运行。

\W*

如您所见,我尝试了两种collisionBehavior方法。球和块都是动态对象,我的屏幕两端是边界。所以每次一个块或者#34;球#34;击中另一个块,桨,球或屏幕的末端,它应该打印"碰撞",但没有任何东西被打印到终端。下面是块,球,桨和边界的代码。

桨:

lazy var collisionDelegate: UICollisionBehaviorDelegate = self

func collisionBehavior(_ behavior: UICollisionBehavior, beganContactFor item1: UIDynamicItem, with item2: UIDynamicItem, at p: CGPoint) {
    print("colliding")
}
func collisionBehavior(_ behavior: UICollisionBehavior, beganContactFor item: UIDynamicItem, withBoundaryIdentifier identifier: NSCopying?, at p: CGPoint) {
    print("colliding")
}

球:

    func paddle () {
    lastPaddle.removeFromSuperview()
    collider.removeItem(lastPaddle)

    let yPos = CGFloat(bounds.size.height / 6 * 5)
    let width = bounds.size.width / 4
    let height = bounds.size.width / 20
    if !first {xPos = bounds.midX; first = true}

    let paddle = CGRect(x: xPos + width/2, y: yPos + height/2, width: width, height: height)
    let frame = UIView(frame: paddle)
    frame.backgroundColor = UIColor.red()
    addSubview(frame)
    let item: UIDynamicItem = frame

    let dib = UIDynamicItemBehavior()
    animator.addBehavior(dib)
    dib.allowsRotation = false
    dib.isAnchored = true
    dib.elasticity = 0

    dib.addItem(item)
    collider.addItem(item)
    lastPaddle = frame


    //collider.removeBoundary(withIdentifier: "paddle")

    //update()
}

块和屏幕结束(边界):

func createBall () {


    xBall = bounds.midX
    yBall = bounds.midY

    let smallRect = CGRect(x: xBall, y: yBall, width: bounds.size.width/12, height: bounds.size.width/12)
    //let lBall = CGPath(ellipseIn: smallRect, transform: nil)
    ball = smallRect
    let frame = UIView(frame: smallRect)
    frame.backgroundColor = UIColor.green()
    addSubview(frame)
    let item: UIDynamicItem = frame
    //collider.elasticity = 100
    gravity.magnitude = 0.5
    gravity.addItem(item)
    collider.addItem(item)
    //let arr = [item]

    animator.addBehavior(ballBehaviour)

    ballBehaviour.elasticity = 1.5

    ballBehaviour.addItem(item)


}

感谢您的帮助

0 个答案:

没有答案