问:Spritekit SKPhysics

时间:2017-03-09 04:41:07

标签: ios swift sprite-kit

我如何单独从左向右滑动拨片,并且在其余部分保持滑动的情况下让角色跳跃停止?如何让4个拨片以相同的速度慢慢左右来回左右移动。拜托,谢谢你。

在这段代码中,我试图为所有人制作一个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。谢谢

1 个答案:

答案 0 :(得分:0)

是的,你可以。您需要给玩家和每个拨片SKPhysicsBody,然后在场景中使用SKPhysicsContactDelegate来检测拨片和播放器之间的碰撞。

当球拍和球员之间发生碰撞时,如果您使用力度移动球员,则可以运行如下例所示的功能来停止球拍。

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

以后请上传您的代码,因为它会更容易为您提供帮助。