我正在构建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))
}
答案 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
}
}
你需要创建一个基线(地面)并将其限制在上面的代码中。