只是玩SpriteKit和Swift,我正在制作一个小立方体跳跃。
我无法理解如何做到但我想避免多次触摸:如果我在立方体飞行时触摸屏幕,它将再次跳跃......
我让玩家跳上touchesBegan
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
player.jump(Float(self.timeSinceLast))
}
方法jump()
是
func jump(timeSinceLast: Float) {
self.sprite.physicsBody.applyImpulse(CGVector(0, self.jumpingForce * timeSinceLast))
}
我尝试在isJumping
中的通话前设置一个布尔touchesBegan()
并在jump()
中检查它但没有成功...
func jump(timeSinceLast: Float) {
if !self.isJumping {
self.isJumping = true;
self.sprite.physicsBody.applyImpulse(CGVector(0, self.jumpingForce * timeSinceLast))
self.isJumping = false;
}
}
这段代码有什么问题?谢谢您的帮助! : - )
答案 0 :(得分:1)
您需要一种方法来弄清楚如何检测您的玩家是否与地面接触。当你完成对角色的冲动时,它仍然必须向上移动然后向下移动。这需要时间,比施加冲动所花费的时间长得多。
如果你的地面平坦,你可以做一些简单的事情,比如检查角色位置的y值,以确定是否适合应用冲动。
如果您的地面形状更复杂,那么在应用冲动之前,您需要检测玩家与地面物体之间是否发生碰撞。