gpt4 book ai didi

macos - didBegin联系逻辑 OSX swift

转载 作者:行者123 更新时间:2023-11-30 14:18:28 26 4
gpt4 key购买 nike

我在创建的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com