didBeginContact не вызывал swift3 Xcode8

#swift3 #xcode8

#swift3 #xcode8

Вопрос:

у меня проблема с методом didBeginContact. У меня есть шар и стена. Столкновение обоих объектов работает нормально. Если оба объекта сталкиваются, они меняют свое положение, но метод didBeginContact не вызывается.

 // constants.swift
...

let ballCategory: UInt32 = 0x1 << 0 
let wallCategory: UInt32 = 0x1 << 1

...

// Physics balls (ball.swift)
...

init() {
  let size = CGSize(width: 32, height: 44)
  loadPhysicsBodyWithSize(size: size)
}

func loadPhysicsBodyWithSize(size: CGSize){
 physicsBody = SKPhysicsBody(rectangleOf: size)
 physicsBody?.categoryBitMask = ballCategory
 physicsBody?.contactTestBitMask = wallCategory
 physicsBody?.affectedByGravity = false
}

...

// Physics wall (wall.swift)
...

init() {
  let size = CGSize(width: 32, height: 44)
  loadPhysicsBodyWithSize(size: size)
}

func loadPhysicsBodyWithSize(size: CGSize){
 physicsBody = SKPhysicsBody(rectangleOf: size)
 physicsBody?.categoryBitMask = wallCategory
 physicsBody?.affectedByGravity = false
}

...

// GameScene (gameScene.swift)
class GameScene: SKScene, SKPhysicsContactDelegate { 
...
 override func didMove(to view: SKView) {
   physicsWorld.contactDelegate = self
 }
 func didBeginContact(contact: SKPhysicsContact){
  print("didBeginContact called")
 }
}
 

У кого-нибудь есть идеи? Спасибо за помощь!

Ответ №1:

Я решил это, изменив

функция didBeginContact(контакт: SKPhysicsContact)

Для

функция didBegin(_ контакт: SKPhysicsContact)