2017-03-09 64 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

我编辑了我的问题并添加了详细信息,请给我建议做些什么。 –