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

Different contactTest bit masks on a single object?

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

player.physicsBody.contactTestBitMask = object1Category | object2Category;

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

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

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

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

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