如何让sprite响应联系事件但不响应碰撞事件(SpriteKit)?

时间:2015-03-13 01:53:51

标签: ios swift cocos2d-iphone sprite-kit

是否有可能在Swift中制作精灵只响应联系事件,忽略碰撞事件?我们为其中一个精灵设置了dynamic属性为false,但是当另一个精灵联系它时,它没有触发didBeginContact方法。

换句话说,当另一个精灵联系一个物体时,我们希望在didBeginContact中收到通知,但我们不希望精灵体验物理(例如,没有弹跳或碰撞)。 / p>

1 个答案:

答案 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