在过去的两天里,我一直在努力让两个SKSpriteNodes注册一个碰撞并唤起didBegin #contact.
我为两个对象设置了它们的位掩码’categoryBitMask’,’contactTestBitMask’和’collisionTestBitMask’.
我还将’动态’属性设置为’true’
initPhysics()似乎设置了physicsWorld.
我所期待的就是调用了#Begin #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********************") }
解决方法
‘didBeginContact’已在swift 3中更改为’didBegin’
func didBegin(_ contact:SKPhysicsContact){
//东西
}
我有一个来自swift 2的代码,’didBeginContact’坐在那里,但没有被调用.经过相当的白色,我发现功能已经改变了.所以,我认为我的回答可以帮助某人.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。