Перемещайте объект (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")
}
}