Быстрое обнаружение столкновений между двумя объектами - PullRequest
0 голосов
/ 10 января 2019

был очень разочарован, и мне сказали использовать переполнение стека для помощи!

Вот моя проблема: я не могу заставить счет уменьшиться после пересечения самолета с птицей!

func behaviorFunctions() {
    dynamicItemBehavior = UIDynamicItemBehavior(items: [bird1, plane1])
    collisionBehavior = UICollisionBehavior(items: [bird1, plane1])
    collisionBehavior.translatesReferenceBoundsIntoBoundary = true
    collisionBehavior.addBoundary(withIdentifier: "plane1" as NSCopying, for: UIBezierPath(rect: plane1.frame))
        collisionBehavior.addBoundary(withIdentifier: "bird1" as NSCopying, for: UIBezierPath(rect: bird1.frame));        animator.addBehavior(dynamicItemBehavior!)
    animator.addBehavior(collisionBehavior)


    collisionBehavior.action = {
        for _ in self.imageArrayBird!{
            if(self.plane1.frame.intersects(self.bird1.frame)){
                self.score = self.score - 50
            }
        }
    }
    }

В чем здесь проблема? Как мне это исправить?

Заранее благодарю за любые ответы!

1 Ответ

0 голосов
/ 10 января 2019

Я не знаю, откуда self.imageArrayBird. Если вы прокомментируете это, следующий параметр может изменить счет как магию.

class MyViewController : UIViewController {
var animator: UIDynamicAnimator!
var dynamicItemBehavior: UIDynamicItemBehavior!
var bird1: UIView!
var plane1: UIView!
var collisionBehavior:UICollisionBehavior!
var score : Int = 500

func behaviorFunctions() {
    dynamicItemBehavior = UIDynamicItemBehavior(items: [bird1, plane1])
    collisionBehavior = UICollisionBehavior(items: [bird1, plane1])
    collisionBehavior.translatesReferenceBoundsIntoBoundary = true
    collisionBehavior.addBoundary(withIdentifier: "plane1" as NSCopying, for: UIBezierPath(rect: plane1.frame))
    collisionBehavior.addBoundary(withIdentifier: "bird1" as NSCopying, for: UIBezierPath(rect: bird1.frame));        animator.addBehavior(dynamicItemBehavior!)
    animator.addBehavior(collisionBehavior)


    collisionBehavior.action = {

      //  for _ in self.imageArrayBird!{
            if(self.plane1.frame.intersects(self.bird1.frame)){
                self.score = self.score - 50
                       print (self.score)
            }
        //}
    }
}



override func viewDidLoad() {
            super.viewDidLoad()
    animator = UIDynamicAnimator.init(referenceView: self.view)
}
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    bird1 = UIView.init(frame: CGRect.init(x: 100, y: 100, width: 100, height: 100))
    plane1 = UIView.init(frame: CGRect.init(x: 100, y: 150, width: 100, height: 100))
    bird1.backgroundColor = .red
    plane1.backgroundColor = .yellow
    self.view.addSubview(bird1)
    self.view.addSubview(plane1)
    behaviorFunctions()
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...