2016-10-28 46 views
0

任何人都可以告訴我爲什麼當我嘗試將衝動應用到像這樣的節點時,它會消失嗎?從用戶滑動中將衝動應用於SKSpriteNode

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

當我從direction.dx和direction.dy中刪除.hashValue時,您的代碼適用於我(散列值用於comparisons)。哦,你的球節點不會消失。這些哈希值足夠大,以至於當你將它們作爲一個力施加到一個球上時,球的速度足夠大,以致在下一幀被渲染時球不在屏幕上。

+0

好的,我誤用了hashValue。我編輯了我對此的看法,精靈的動作更加真實。需要縮小矢量。 讓impulseDirectionX =(direction.dx/4) 讓impulseDirectionY =(-direction.dy/4) self.L1Ball.physicsBody .applyImpulse?(CGVector(DX:impulseDirectionX,DY:impulseDirectionY)) self.L1Ball.physicsBody ?.affectedByGravity = true – Lyres

+0

太好了。我是否正確回答你的問題? – Ralph

+0

你確實再次感謝! – Lyres