iOS迅捷 - 如何跳跃'只有在降落时,没有空中跳跃 - (touchesBegan)

时间:2015-07-24 22:37:55

标签: ios swift

我正在构建2D游戏,游戏的目标是跳过地面上的障碍物并在空中飞行。目前,角色可以在半空中跳跃多次并具有飞行能力。

我希望只让角色每隔一秒左右跳一次,有没有办法在触摸开始时设置时间延迟'。理想情况下,我希望能够改变时间延迟,以确保游戏玩法既有趣又具有挑战性。

下面是我的touchesBegan的副本,如果您需要更多脚本,请告诉我,或者下面的内容不是很正确。

谢谢。

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))
}

1 个答案:

答案 0 :(得分:0)

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
    }
}

你需要创建一个基线(地面)并将其限制在上面的代码中。