是否有可能在Swift中制作精灵只响应联系事件,忽略碰撞事件?我们为其中一个精灵设置了dynamic
属性为false
,但是当另一个精灵联系它时,它没有触发didBeginContact
方法。
换句话说,当另一个精灵联系一个物体时,我们希望在didBeginContact
中收到通知,但我们不希望精灵体验物理(例如,没有弹跳或碰撞)。 / p>
答案 0 :(得分:1)
在两个精灵上将collisionbitmask设置为0。但是将contacttestbitmask设置为相反的精灵categorybitmask
以下是一个例子
继承人加电的设置这是一个没有表现出物理行为的物理主体
self.physicsBody = SKPhysicsBody(rectangleOfSize: self.size)
self.physicsBody!.categoryBitMask = CategoryPowerup
self.physicsBody!.contactTestBitMask = CategoryShip
self.physicsBody!.collisionBitMask = 0
self.physicsBody!.dynamic = false
继承了我的发货获得启动的设置
let physicsBodyInset = CGRectInset(CGRectMake(0, 0, self.size.width, self.size.height), 2, 2)
self.physicsBody = SKPhysicsBody(rectangleOfSize: physicsBodyInset.size)
self.physicsBody!.restitution = 0
self.physicsBody!.categoryBitMask = CategoryShip