Может ли кто-нибудь сказать мне, почему, когда я пытаюсь применить импульс к этому узлу, он исчезает?Применить импульс к 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. Если я попытаюсь использовать направление как импульсный вектор, он просто сработает. Любое понимание? Благодаря!
Да, хорошо, я злоупотреблял hashValue. Я отредактировал то, что у меня было, и спрайт движется более реалистично. Нужно масштабировать вектор. пусть impulseDirectionX = (direction.dx/4) пусть impulseDirectionY = (-direction.dy/4) self.L1Ball.physicsBody .applyImpulse? (CGVector (дй: impulseDirectionX, д: impulseDirectionY)) self.L1Ball.physicsBody ? .affectedByGravity = true – Lyres
Это здорово. Я правильно ответил на ваш вопрос? – Ralph
Вы уверены, что еще раз спасибо! – Lyres