2016-05-26 2 views
2

Я должен сделать приложение Breakout в приложении с одним просмотром на языке Swift. Тем не менее, у меня возникают проблемы с получением «мяча», чтобы ответить на удар по барьеру. Кроме того, у меня возникают проблемы с тем, чтобы препятствие исчезло после его удара. У кого-нибудь есть решение этого, или у кого-нибудь есть пример приложения, от которого я могу смотреть? Это приложение Single View, а не Sprite.UICollisions in Swift

var dynamicAnimatior = UIDynamicAnimator() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    dynamicAnimatior = UIDynamicAnimator(referenceView: view) 
    setupViews() 
} 

func setupViews() { 

    let blueSquare = UIView(frame: CGRectMake(100, 100, 50, 50)) 
    blueSquare.backgroundColor = UIColor.blueColor() 
    view.addSubview(blueSquare) 

    let barrier = UIView(frame: CGRect(x: 0, y: 300, width: 130, height: 20)) 
    barrier.backgroundColor = UIColor.redColor() 
    view.addSubview(barrier) 

    addDynamicBehaviors([blueSquare]) 
} 

func addDynamicBehaviors(array: [UIView]) { 

    let dynamicItemBehavior = UIDynamicItemBehavior(items: array) 
    dynamicItemBehavior.density = 1.0 
    dynamicItemBehavior.friction = 0.0 
    dynamicItemBehavior.resistance = 0.0 
    dynamicItemBehavior.elasticity = 1.0 
    dynamicAnimatior.addBehavior(dynamicItemBehavior) 

    let pushBehavior = UIPushBehavior(items: array, mode: .Instantaneous) 
    pushBehavior.magnitude = 1.0 
    pushBehavior.pushDirection = CGVectorMake(0.5, 0.5) 
    dynamicAnimatior.addBehavior(pushBehavior) 

    let collisionBehavior = UICollisionBehavior(items: array) 
    collisionBehavior.translatesReferenceBoundsIntoBoundary = true 
    collisionBehavior.collisionMode = .Everything 
    collisionBehavior.collisionDelegate = self 

    dynamicAnimatior.addBehavior(collisionBehavior)  
} 

ответ

0

Вы должны иметь как объекты в UICollisionBehavior, если вы хотите, чтобы они сталкиваются. В зависимости от того, что вам нужно, есть несколько возможностей. Я полагаю, что вам нужен мяч, чтобы подпрыгнуть на барьере, таким образом, создать поведение:

let collisionBehavior = UICollisionBehavior(blueSquare: array) 

, а затем добавить жесткую границы, которая соответствует вашему барьеру:

let edge = CGPointMake(barrier.frame.origin.x + barrier.frame.size.width, 
         barrier.frame.origin.y + barrier.frame.size.heigth); 
collisionBehavior.addBoundaryWithIdentifier("barrier", 
              fromPoint:barrier.frame.origin, 
              toPoint:rightEdge]; 

Теперь, если вы хотите захват столкновение необходимо добавить делегата в collisionDelegate. Этот делегат должен иметь возможность реагировать на несколько методов, когда происходит сбой (прочитайте документацию о UICollisionBehaviorDelegate.

+0

Все еще не работает, говорит, что барьер здесь не отображается. Любая идея об исправлении? –

+0

Параметры прохождения, я просто покажу вам идея ... –