2017-03-09 61 views
1

我怎樣才能從左到右單獨滑動划水板,讓滑板上的字符在停止滑動時跳上去?我該如何讓4個槳緩慢地以相同的速度前後左右移動。謝謝,麻煩您了。問:Spritekit SKPhysics

在這段代碼中,我試圖爲所有人制作一個SKPhysics主體,但我不知道如何。

override func didMove(to view: SKView) { 

    background = self.childNode(withName: "background") as! SKSpriteNode 
    jellyghost = self.childNode(withName: "jellyghost") as! SKSpriteNode 
    paddle1 = self.childNode(withName: "paddle1") as! SKSpriteNode 
    paddle2 = self.childNode(withName: "paddle2") as! SKSpriteNode 
    paddle3 = self.childNode(withName: "paddle3") as! SKSpriteNode 
    paddle4 = self.childNode(withName: "paddle4") as! SKSpriteNode 


    jellyghost.physicsBody = SKPhysicsBody() 
    paddle1.physicsBody = SKPhysicsBody() 
    paddle2.physicsBody = SKPhysicsBody() 
    paddle3.physicsBody = SKPhysicsBody() 
    paddle4.physicsBody = SKPhysicsBody() 
} 

我試圖讓一個以上的身體SKPhysics,我沒怎麼做。 在下面的代碼中,我試圖讓4個槳中的每一個都以相同的速度從左到右自己移動,而沒有他們移動到觸摸位置,而且事情對我而言並不奏效。現在

override func touchesBegan(_ touches: Set, with event: UIEvent?) { 

for touch in touches{ 
    let location = touch.location(in: self) 
    paddle1.run(SKAction.moveTo(x: location.x,duration: 1.0)) 
    paddle2.run(SKAction.moveTo(x: location.x, duration: 1.0)) 
    paddle3.run(SKAction.moveTo(x: location.x, duration: 1.0)) 
    paddle4.run(SKAction.moveTo(x: location.x, duration: 1.0)) 
} 

} 

我也想讓我的性格跳轉到移動撥片,但我不知道我怎麼會做我的性格高達拖動畫面並將其釋放到槳的當前位置躥升。我如何讓它不僅限於直線跳躍,而且足夠靈活,可以跳躍x和y。謝謝

回答

0

是的,你可以。您需要給玩家和每個槳板一個SKPhysicsBody,然後在場景中使用SKPhysicsContactDelegate來檢測槳板和播放器之間的碰撞。

當槳與球員之間發生碰撞時,如果您使用速度移動球員,您可以運行如下例所示的func來停止槳。

func stopPaddle(paddle: SKSpriteNode) { 
    paddle?.physicBody.velocity(CGVector(dx: 0, dy:0) 
} 

請在將來上傳您的代碼,因爲它會更容易幫助您。

+0

我編輯了我的問題並添加了詳細信息,請給我建議做些什麼。 –