单个对象上的不同contactTest位掩码?

时间:2015-01-31 17:37:23

标签: ios objective-c sprite-kit collision-detection skphysicsbody

一个物理体对象可以有两个不同的contactTestBitMask吗?我正在使用Objective-C制作我的第一个游戏,但我有一个物体(玩家)可以与两个不同的物体(物体1和物体2)发生碰撞,并在与一个或另一个碰撞时做不同的事情,所以我有这一行:

player.physicsBody.contactTestBitMask = object1Category | object2Category;

但问题在于,当我使用-didBeginContact方法时,当玩家与object1发生碰撞时会执行一些代码,但是当玩家与object2发生碰撞时会执行相同的代码当它与object1发生碰撞时,我希望玩家在与object2发生碰撞时执行一些不同的代码。

1 个答案:

答案 0 :(得分:0)

在你的didBeginContact方法中你应该有这样的东西:

if (collision == (CategoryObjectA | CategoryPlayer)) {
        // code...
}

if (collision == (CategoryObjectB | CategoryPlayer)) {
        // code...
}

显然,您需要为对象A和对象B设置唯一的categoryBitMask,并将其contactTestBitMask设置为识别播放器对象。