在SpriteKit中,我希望将contactTestBitMask值分配给一组值。指定contactTestBitMask为<Set>
这是正常的方式:
sprite.physicsBody?.contactTestBitMask = ColliderType.goal.rawValue | ColliderType.greyBox.rawValue
意味着我的精灵通知我,当谈到它与这些撞机类型的联系。 但是我的问题是我的collider类型会在游戏过程中动态变化,而且精灵contactTestBitMask也需要改变。我想用一组对撞机类型和分配不同的组和挪用时间:
sprite.physicsBody?.contactTestBitMask = SetManager.sharedSetManager.normalSet
在SetManager类:
enum NormalColliderType:UInt32 {
case greyBox = 0
case enemy = 2
case goal = 4
case coin = 8
}
var currentSet: Set<Int> = []
var normalSet: Set<UInt32> = [NormalColliderType.greyBox.rawValue | NormalColliderType.goal.rawValue]
static let sharedSetManager = SetManager()
从理论上讲,它的可行的,但我收到的唯一的错误是: “无法分配类型‘设置’的价值键入‘UInt32的’” 我猜我问了一套如何可以用作可变
碰撞可以了'greyBoxAndGoal'情况下你'enum' 5('greyBox'的增值应该是1不是0)。 – 0x141E