我正在构建2D游戏,游戏的目的是跳过地面上的障碍物并在空中飞行。目前,角色可以在空中跳跃多次并具有飞行的能力。
我只想让角色每秒钟左右跳一次,有没有办法在'touchesBegan'上设置时间延迟。理想情况下,id喜欢能够更改时间延迟以确保游戏玩法既有趣又具有挑战性。
下面是我的接触的副本开始,如果您需要更多脚本或以下内容不太正确,请告诉我。
谢谢。
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
/* Called when a touch begins */
cat.physicsBody!.velocity = CGVectorMake(0, 0)
cat.physicsBody!.applyImpulse(CGVectorMake(0, 20))
}
最佳答案
let runningBar = SKSpriteNode(imageNamed: "ground")
var velocityY = CGFloat(0)
var onGround = true
func didMoveToView(view: SKView) {
initHero()
}
func initHero() {
hero = SKSpriteNode(imageNamed: "hero")
self.heroBaseline = self.runningBar.position.y + (self.runningBar.size.height / 2) +
(self.hero.size.height / 2)
self.hero.position = CGPointMake(
CGRectGetMinX(self.frame) + (self.hero.size.width / 3) + (self.hero.size.width / 4),
self.heroBaseline)
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
if self.onGround {
self.velocityY = -18.0
self.onGround = false
}
}
override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
if self.velocityY < -9.0 {
self.velocityY = -9.0
}
}
您需要创建一个基线(地面)并将其限制为上述代码中的基线。
关于ios - iOS swift-仅在着陆时如何“跳跃”,没有空中跳跃-(touchesBegan),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31620824/