【发布时间】:2015-06-10 09:29:43
【问题描述】:
我听说每个 Sprite Kit 游戏只允许使用 32 种不同的类别位掩码。有没有办法解决?我绝对需要更多(大约需要 3-4 倍,因为游戏是一个开放世界的游戏)。我将我的 categorybitmask 设置如下:
static const uint64_t boundaryCategory = 0x1 << 0;
static const uint64_t mainCharCategory = 0x1 << 1;
...
static const uint64_t someOtherCategory = 0x1 << 31;
我什至将 uint32_t 更改为 uint64_t,希望这会使我可以使用的 categorybitmask 数量翻倍。不幸的是,事实并非如此。如果有人知道任何绕过此限制的技术,我将非常感激。
【问题讨论】:
-
你是对的。因为 Sprite Kit 对代表 32 个不同物理类别的 32 位整数使用位掩码,所以您不能拥有更多(即使在 Xcode 7 中也是如此)。对于最大值(UInt32 * 2),4294967295,即二进制的 11111111111111111111111111111111,您使该对象与所有其他对象发生碰撞。
-
好的。所以绝对没有办法破解这个限制?我是否可以使用其他一些技术来提供与“char1.physicsBody.categoryBitMask = char1Category;”相同或相似的功能?
标签: ios objective-c sprite-kit bitmask