Перемещайте объект (spritenode) быстро и быстро, пока не коснетесь экрана

Я пытаюсь заставить объект выполнять действие непрерывно, пока к нему не прикоснутся, но при прикосновении к объекту просто выполняет действие один раз.
это то, что я до сих пор

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {

    for touches: AnyObject in touches {

        plane.physicsBody?.velocity = CGVectorMake(0, 0)
        plane.physicsBody?.applyImpulse(CGVectorMake(0, 500))
    }
}

любой sugessiton, как заставить это работать.

1 ответ

Если вы хотите переместить объект, вам лучше использовать SKAction.moveBy вместо импульса. В данный момент вы выполняете это действие только в том случае, если пользователь коснулся экрана. Если вы хотите выполнить действие, пока пользователь не коснется экрана, вы должны поместить его в didMoveToView метод и использовать ключ, чтобы вы могли удалить действие из спрайта:

class YourClass: SKScene{
    var sprite = SKSpriteNode()

    override func didMoveToView(view: SKView) {

        //4 seconds for 500y
        var neededTime:NSTimeInterval = 4
        var action = SKAction.moveBy(CGVectorMake(0, 500), duration: neededTime)
        var repeatAction = SKAction.repeatActionForever(action)



        //Repeat the action forever and with a key so you can remove it on touch:
        sprite.runAction(repeatAction, withKey: "aKey")
    }

    override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
        //remove the action
        sprite.removeActionForKey("aKey")
    }
}
Другие вопросы по тегам