【问题标题】:Up and down movement in sprite kit and swift?sprite kit和swift中的上下运动?
【发布时间】:2015-07-16 08:50:11
【问题描述】:

现在,我正在创建一个新游戏,该游戏将涉及一个在屏幕上自行上下移动的球,而无需触摸按钮或屏幕。我一直在到处寻找解决方案,但没有找到。我知道如何让球在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) 
    }

 }
}

【问题讨论】:

    标签: swift sprite-kit


    【解决方案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)
    
    }
    

    【讨论】:

    • 这解决了我的问题,谢谢。唯一不起作用的是 func moveSprite(),所以我删除了它并将其余部分添加到 didMoveToView。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多