精灵套件和swift的上下运动?

时间:2015-07-15 22:12:13

标签: swift sprite-kit

现在,我正在制作一款新游戏,它将涉及一个在屏幕上上下移动而不触碰按钮或屏幕的球。我一直在寻找解决方案,但我还没有找到解决方案。我知道如何让球在objective-c中上下移动,但不是在swift或spritekit中。我不知道以下代码是否有帮助。任何解决方案都被接受。

class GamePlayScene: SKScene, SKPhysicsContactDelegate {

var ball = SKSpriteNode(imageNamed: "green ball.png")

override func didMoveToView(view: SKView) {
    //setup scene

    physicsWorld.gravity = CGVector.zeroVector

    self.scene?.backgroundColor = UIColor.blackColor()
    self.scene?.size = CGSize(width: 640, height: 1136)

    ball.position = CGPoint (x: self.size.width * 0.5, y: self.size.width * 0.9)
    ball.size = CGSize (width: 80, height: 82)
    let moveBallUp = SKAction.moveToY(600, duration: 0.4)
    let moveBallDown = SKAction.moveToY(293, duration: 0.4)

    self.addChild(ball)

}

override func update(currentTime: CFTimeInterval) {
    /* Called before each frame is rendered */

    let moveBallUp = SKAction.moveToY(600, duration: 0.4)
    let moveBallDown = SKAction.moveToY(293, duration: 0.4)

    if ball.position.y == 600 {
        self.ball.runAction(moveBallUp)
    } else {  
        self.ball.runAction(moveBallDown) 
    }

 }
}

1 个答案:

答案 0 :(得分:1)

我建议你使用repeatActionForever。如果你从屏幕底部开始你的球位置,这个序列应该有效。如果你想从顶部开始球,那么在moveUpAndDown中相互切换动作的位置。

func moveSprite() {

 let moveBallUp = SKAction.moveToY(600, duration: 0.4)
    let moveBallDown = SKAction.moveToY(293, duration: 0.4)
let moveUpAndDown = SKAction.sequence([moveBallUp, moveBallDown])
let moveUpAndDownForever = SKAction.repeatActionForever(moveUpAndDown)
ball.runAction(moveUpAndDownForever)

}