Я разрабатываю игру с Sprite Kit, в которой у меня есть узел, названный героем, который уклоняется от приближающихся злодеев. У меня проблема с applyImpulse
для действия прыжка, и в этом случае герой может многократно прыгать и летать вместо того, чтобы уклоняться от злодеев. Я использую логическую переменную, чтобы изменить статус со значением таймера, чтобы прыгать только один раз за 3 секунды, но это не работает. Вот мой кодПрименение импульса на узле SpriteKit
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
if isGameOver == true {
self.restart()
}
if isstarted {
self.runAction(SKAction.playSoundFileNamed("jump.wav", waitForCompletion: false))
for touch: AnyObject in touches{
if jumpon == false { //hero has not jumped
let location = touch.locationInNode(self)
heroAction()
jumpon = true //hero jumped
}
}
} else {
isstarted = true
hero.stop()
hero.armMove()
hero.rightLegMove()
hero.leftLegMove()
treeMove()
villanMove()
let clickToStartLable = childNodeWithName("clickTostartLable")
clickToStartLable?.removeFromParent()
addGrass()
// star.generateStarWithSpawnTime()
}
}
func changeJump(){
jumpon = false // hero has landed
}
и обновление функция вызывается в каждом втором, а затем changeJump
должен быть назван
override func update(currentTime: CFTimeInterval) {
if isstarted == true {
let pointsLabel = childNodeWithName("pointsLabel") as MLpoints
pointsLabel.increment()
}
if jumpon == true { // checked everyframe that hero jumped
jumpingTimer = NSTimer.scheduledTimerWithTimeInterval(3, target: self, selector: "changeJump", userInfo: nil, repeats: true) // changing jump status
}
}
Как мне обновить свой код, чтобы сделать героя прыгать только один раз в три секунды. Заранее спасибо.
я предполагаю, что каждый прыжок может продолжаться 2 или 3 секунды, если это не сработало, тогда это мой выбор, спасибо! – AjayPandiyaraj