我正在构建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/

10-11 16:14