2016-11-15 53 views
1

我的Pong版本有問題。 當我輸入此代碼時,球不會在屏幕上移動。 問題在哪裏? 請幫幫我!Pong克隆球不移動

class GameScene: SKScene { 

    var ball = SKSpriteNode() 
    var enemy = SKSpriteNode() 
    var main = SKSpriteNode() 

    override func didMove(to view: SKView) { 

     ball = self.childNode(withName: "ball") as! SKSpriteNode 
     enemy = self.childNode(withName: "enemy") as! SKSpriteNode 
     main = self.childNode(withName: "main") as! SKSpriteNode 

     ball.physicsBody?.applyImpulse(CGVector(dx: 20, dy: 20)) 

     let border = SKPhysicsBody(edgeLoopFrom: self.frame) 

     border.friction = 0 
     border.restitution = 1 

     self.physicsBody = border 

    } 
} 
+0

Sebastiano你如何創建你的項目,你從哪裏獲得靈感? – Confused

回答

2

你都知道,這行代碼

ball.physicsBody?.applyImpulse(CGVector(dx: 20, dy: 20)) 

意味着

「如果球的財產physicsBodynil,調用該方法applyImpulse()就可以了」

AREN」你呢?好的。如果physicsBodynil?對,它什麼都不做。那麼你檢查了physicsBody是不是nil此代碼執行的那一刻?

根據財產physicsBody文檔:

默認值是零,這表明該節點不參加物理模擬的。如果提供物理體,則在模擬場景物理時,物理體更新節點的位置並旋轉節點。

沒有代碼顯示您在球對象上設置了一個physicsBody

+0

你使用過SpriteKit場景編輯器嗎? – Confused

+0

@Confused我不明白你的問題。這與我的回答有什麼關係? – Mecki

+0

我相當確定OP會在場景編輯器中創建所有內容,然後嘗試「導入」它們並在上面的代碼中使用它們。 Apple和一些教程網站和服務大肆宣稱,可以在沒有太多代碼知識的情況下在SpriteKit中完成任務。所以這個人可能是這個的受害者,並且可能沒有關於可選項和物理機構創建的線索。 – Confused