macos - didBegin联系逻辑 OSX swift

标签 macos swift if-statement logic collision

我在创建的 OSX 游戏上的 didBeginContact 内部逻辑遇到一些问题。它是用 swift 编写的,目前的代码如下:

   func didBeginContact(contact: SKPhysicsContact) {

    let collision: UInt32 = contact.bodyA.categoryBitMask |
        contact.bodyB.categoryBitMask

    if collision == PhysicsCategory.player | PhysicsCategory.wall {

    } else if collision ==
        PhysicsCategory.player | PhysicsCategory.box {
            player.setJump(true)

    } else if collision ==
        PhysicsCategory.player | PhysicsCategory.floor {
            player.setJump(true)
    }

    if collision ==
        PhysicsCategory.laser | PhysicsCategory.wall {

            effects = SKEmitterNode(fileNamed: "Explosion.sks")
            addChild(effects!)
            laser!.removeFromParent()
    }

   else  if collision ==
        PhysicsCategory.laser | PhysicsCategory.floor {
            effects = SKEmitterNode(fileNamed: "Explosion.sks")
            addChild(effects!)
             laser!.removeFromParent()
    }

我觉得这些困惑的 if 语句效率非常低,但我不知道如何将其转换为 switch 语句,或者是否会更有效。我尝试删除“else”并只添加一系列“if”语句,但是当发生碰撞时我会遇到更多错误(盒子穿过墙壁掉落等......)任何建议将不胜感激

最佳答案

如果有人偶然发现这个问题,我是这样解决的。

let collision: UInt32 = contact.bodyA.categoryBitMask | 

 contact.bodyB.categoryBitMask

    switch collision{

    case PhysicsCategory.player | PhysicsCategory.floor:
         playerObj.setJump(true)

    case  PhysicsCategory.player | PhysicsCategory.box:
        playerObj.setJump(true)

    case PhysicsCategory.player | PhysicsCategory.wall:
        return
     // ect...
     default:
        return
} 

关于macos - didBegin联系逻辑 OSX swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30830748/

相关文章:

if-statement - 为什么一个变量与多个值的不相等检查总是返回 true?

java - 'error: variable a might not have been initialized' 在这个 if 构造中真的有必要吗?

安装 OS X 10.8 macports 后,python pip 无法处理 requirements.txt

Swift OSX CNContact.organizationName 在 High Sierra 中崩溃

java - 在 Mac 上使用 Eclipse 在 JavaFX 15 中未显示 GUI

swift - 在 watch 上点击的本地用户通知操作未传送到 iOS 应用程序

excel - 如何使用 IF 函数进行 ROUNDUP 和 ROUNDDOWN

macos - 我怎样才能让 ZSH 使用最新的 git 版本?

Swift Google Maps 圆滑的多段线

ios - 有没有办法在 Swift 中满足某个条件时结束递归方法?