相关疑难解决方法(0)

如何在Swift中创建NS_OPTIONS样式的位掩码枚举?

在Apple关于与C API交互的文档中,他们描述了NS_ENUM以Swift枚举方式导入标记的C风格枚举的方式.这是有道理的,因为Swift中的枚举很容易作为enum值类型提供,所以很容易看到如何创建自己的.

更进一步,它说这是关于NS_OPTIONS标记的C风格选项:

Swift还导入标有NS_OPTIONS宏的选项.而选项的行为类似于进口枚举,选项还可以支持一些位操作,如&,|~.在Objective-C中,表示使用常量零(0)设置的空选项.在Swift中,用于nil表示没有任何选项.

鉴于optionsSwift中没有值类型,我们如何创建一个C-Style选项变量来使用?

bitwise-operators ios swift

128
推荐指数
5
解决办法
4万
查看次数

Swift/SpriteKit多重碰撞检测?

在此输入图像描述

你好.

我有一个多重碰撞问题.有一颗子弹击中敌人(红色矩形).然后,它得分.有一个螺旋(红色圆圈),当敌人(红色矩形)接触时,它会触发场景结束.

在这种情况下,当敌人击中螺旋,它工作,场景结束,我们进入菜单屏幕.但是,当子弹击中敌人时,同样的事情发生了,我不知道为什么.

现在,这是我的代码:

struct PhysicsCategory {
    static let None : UInt32 = 0
    static let All : UInt32 = UInt32.max
    static let enemyOne : UInt32 = 0b1
    static let enemyTwo : UInt32 = 0b1
    static let bullet : UInt32 = 0b10
    static let spiral : UInt32 = 0b111
}

 spiral.physicsBody = SKPhysicsBody(rectangleOfSize: spiral.size)
        spiral.physicsBody?.categoryBitMask = PhysicsCategory.spiral
        spiral.physicsBody?.contactTestBitMask = PhysicsCategory.enemyOne
        spiral.physicsBody?.collisionBitMask = PhysicsCategory.None
...
        enemyOne.physicsBody = SKPhysicsBody(rectangleOfSize: enemyOne.size)
        enemyOne.physicsBody?.dynamic = true
        enemyOne.physicsBody?.categoryBitMask = PhysicsCategory.enemyOne
        enemyOne.physicsBody?.contactTestBitMask = PhysicsCategory.bullet | PhysicsCategory.spiral
        enemyOne.physicsBody?.collisionBitMask …
Run Code Online (Sandbox Code Playgroud)

collision-detection collision ios sprite-kit swift

7
推荐指数
1
解决办法
7645
查看次数