저는 충돌을 등록하기 위해 두 SKSpriteNodes를 얻으려는 지난 이틀간 어려움을 겪었으며 didBegin#contact
을 나타냅니다.iOS Swift didBeginContact가 호출되지 않았습니다.
두 개체에 대해 비트 마스크 'categoryBitMask
', 'contactTestBitMask
'및 'collisionTestBitMask
'을 설정했습니다. 나는 또한
initPhysics()
'true
'에 모두에 대해 'dynamic
'속성을 설정 한
는 괜찮 physicsWorld를 설정하는 것 같다. 둘 다 physicsBodies의 categoryBitMask을 (init을해야 당신이 자동차와 slowCar 사이의 접촉을 원하는 경우
내가 기대하고있어 모든
이didBegin#Contact
가 호출되어 있지만 그렇지 않은
//Set up Physicsbody bit masks
let playerCarBitMask: UInt32 = 0x1 << 1
let slowCarBitMask: UInt32 = 0x1 << 2
//initPhysics
func initPhysics() {
println("((((((((((((((Initiating Physicsbody))))))))))))))")
self.physicsWorld.contactDelegate = self
self.physicsWorld.gravity = CGVector.zeroVector
println("self.physicsWorld.contactDelegate = \(self.physicsWorld.contactDelegate)")
}
//setupPlayer
func setupPlayer() {
car = SKSpriteNode(imageNamed: "redCarUp")
car.setScale(2.0)
car.position = CGPoint(x: 800, y: 400)
car.zPosition = 100
car.name = "car"
gameNode.addChild(car)
let carBody = SKPhysicsBody(
rectangleOfSize: car.frame.size, center: car.position)
carBody.dynamic = true
carBody.categoryBitMask = playerCarBitMask
carBody.contactTestBitMask = slowCarBitMask
carBody.mass = 5
carBody.collisionBitMask = slowCarBitMask
car.physicsBody = carBody
println("carBody = \(carBody)")
println("carBody.dynamic = \(carBody.dynamic)")
println("carBody.mass = \(carBody.mass)")
println("carBody.categoryBitMask = \(carBody.categoryBitMask)")
println("carBody.contactTestBitMask = \(carBody.contactTestBitMask)")
println("carBody.collisionBitMask = \(carBody.contactTestBitMask)")
slowCar = SKSpriteNode(imageNamed: "blueCarUp")
slowCar.setScale(2.0)
let slowCarScenePos = CGPoint(
x: 680,
y: 2048)
slowCar.position = gameNode.convertPoint(slowCarScenePos, fromNode: self)
println("slowCar.position = \(slowCar.position) ****")
slowCar.zPosition = 80
slowCar.name = "slowCar"
let slowCarBody = SKPhysicsBody(
rectangleOfSize: slowCar.frame.size, center: slowCar.position)
println("slowCar = \(slowCar) ****")
slowCarBody.dynamic = true
slowCarBody.categoryBitMask = slowCarBitMask
slowCarBody.contactTestBitMask = playerCarBitMask
slowCarBody.mass = 5
slowCarBody.collisionBitMask = playerCarBitMask
slowCar.physicsBody = slowCarBody
gameNode.addChild(slowCar)
}
func didBeginContact(contact: SKPhysicsContact!) {
println("*******************PhysicsContact********************")
}
코드 덤프는이 플랫폼에서 인정되지 않습니다. – Mundi
**와 collisionBitMask는 ** contactTestBitMask **로 설정해야합니다. 이건 보통 잡았다. 스토리 보드 편집기에서 ** 기본적으로 contactTestBitMask를 0으로 남겨 둡니다 ** - 이것은 일반적인 문제입니다. 그냥 "1"로 설정하십시오 – Fattie