仅在x轴上移动Sprite

时间:2017-04-25 00:04:58

标签: ios swift sprite-kit

我正在使用Ray Wenderlich的2D游戏开发书,我利用本书中的一个功能来控制精灵的运动,这里称为“乘客”。本书中的例子是在x和y轴上移动精灵,因为我只需要沿x轴移动精灵,但我无法使其工作。

这是“我的”代码 - 我正在使用的代码

    func move(sprite: SKSpriteNode, velocity: CGPoint){        
    let amountToMove = CGPoint(x: velocity.x * CGFloat(dt),
                               y: velocity.y * CGFloat(dt))
    sprite.position = CGPoint(
        x: sprite.position.x + amountToMove.x,
        y: sprite.position.y + amountToMove.y)
}

func movePassengerToward(location: CGPoint) {        
    let offset = CGPoint(x: location.x - passenger.position.x, y: location.y - passenger.position.y)
    let length = sqrt(Double(offset.x * offset.x + offset.y * offset.y))
    let direction = CGPoint(x: offset.x / CGFloat(length),
                            y: offset.y / CGFloat(length))
    velocity = CGPoint(x: direction.x * passengerMovePointsPerSec,
                       y: direction.y * passengerMovePointsPerSec)        
}

我从更新循环中触发这些函数,如下所示:

if let lastTaxiLocation = lastTaxiLocation {
let diff = lastTaxiLocation - passenger.position
if diff.length() <= passengerMovePointsPerSec * CGFloat(dt){
    passenger.position = lastTaxiLocation
    velocity = CGPoint.zero
} else {
    move(sprite: passenger, velocity: velocity)
    print("update loop")
    }
}

有没有人对这个问题有所了解?

1 个答案:

答案 0 :(得分:1)

尝试仅设置move功能中的 X 组件:

sprite.position.x = sprite.position.x + amountToMove.x