gpt4 book ai didi

swift - 键盘作为游戏 Controller ,在 Swift 中处理多个键

转载 作者:搜寻专家 更新时间:2023-10-31 22:57:39 24 4
gpt4 key购买 nike

我正在尝试使用键盘让飞船在屏幕上移动。我设法处理了按键事件,但我注意到当同时按下多个按键时,它不会正确运行,只有一个具有优先权。我正在使用 switch 语句,因为我认为 keyDown 函数为每个键调用一次,但即使我在中显式添加 fallthrough这些情况并没有更好。有没有人经历过类似的事情,有没有更好的方法将键盘用作 Controller ?

override func keyDown(with event: NSEvent) {

switch event.keyCode {
case 0x31:
if let playerShip = self.playerShip {
playerShip.run(SKAction.init(named: "Pulse")!, withKey: "fadeInOut")
}
case 123:
if let playerShip = self.playerShip {
playerShip.run(SKAction.applyAngularImpulse(0.001, duration: 0.1))
}
case 124:
if let playerShip = self.playerShip {
playerShip.run(SKAction.applyAngularImpulse(-0.001, duration: 0.1))
}
case 125:
if let playerShip = self.playerShip {
playerShip.run(SKAction.applyImpulse(CGVector.init(angle: playerShip.zRotation).opposite(), duration: 0.1))
}
case 126:
if let playerShip = self.playerShip {
playerShip.run(SKAction.applyImpulse(CGVector.init(angle: playerShip.zRotation), duration: 0.1))
}
default:
print("keyDown: \(event.characters!) keyCode: \(event.keyCode)")
}
}

最佳答案

我的猜测是,即使您让代码完全按照您描述的方式工作,实际上玩您的游戏的任何人都很难同时按下两个键。一个键几乎总是先于另一个键被敲击。因此,也许您可​​以实现它,以便捕获一个关键事件,然后寻找在第一个事件发生后的短时间窗口内发生的第二个事件(在第一个事件发布之前)。

关于swift - 键盘作为游戏 Controller ,在 Swift 中处理多个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42879819/

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