2016-10-28 13 views
0

Может ли кто-нибудь сказать мне, почему, когда я пытаюсь применить импульс к этому узлу, он исчезает?Применить импульс к SKSpriteNode от пользователя swipe

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
    let touch:UITouch = touches.first! as UITouch 
    startPoint = touch.location(in: view) 
} 

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { 
    defer { 
     startPoint = nil 
    } 
    guard touches.count == 1, let startPoint = startPoint else { 
     return 
    } 
    if let touch = touches.first { 
     let endPoint = touch.location(in: view) 
     //Calculate your vector from the delta and what not here 
     direction = CGVector(dx: endPoint.x - startPoint.x, dy: endPoint.y - startPoint.y) 

     L1Ball.physicsBody?.applyImpulse(CGVector(dx: direction.dx.hashValue, dy: direction.dy.hashValue)) 
     } 
} 

Я думаю, что это как-то связано с тем, как я использую hashValue. Я не знаю другого способа получить значения из направления CGVector. Если я попытаюсь использовать направление как импульсный вектор, он просто сработает. Любое понимание? Благодаря!

ответ

1

Ваш код работал на меня, когда я удалил .hashValue из direction.dx и direction.dy (значения хеша используются для comparisons). О, и ваш шаровой узел не исчезает. Эти значения хеширования достаточно велики, что, когда вы применяете их на шаре в качестве силы, скорость мяча достаточно велика, и к тому времени, когда будет отображаться следующий кадр, мяч будет отключен от экрана.

+0

Да, хорошо, я злоупотреблял hashValue. Я отредактировал то, что у меня было, и спрайт движется более реалистично. Нужно масштабировать вектор. пусть impulseDirectionX = (direction.dx/4) пусть impulseDirectionY = (-direction.dy/4) self.L1Ball.physicsBody .applyImpulse? (CGVector (дй: impulseDirectionX, д: impulseDirectionY)) self.L1Ball.physicsBody ? .affectedByGravity = true – Lyres

+0

Это здорово. Я правильно ответил на ваш вопрос? – Ralph

+0

Вы уверены, что еще раз спасибо! – Lyres