2017-04-25 107 views
0

我正在使用Ray Wenderlich的2D游戏开发书,并利用本书中的一个函数来控制sprite的移动,这里称为'乘客'。本书中的例子是在x和y轴上移动精灵,因为我只需要沿着x轴移动精灵,但是我无法使它工作。仅在x轴上移动Sprite

这里是“我的”代码 - 以及我使用

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

尝试设置只有X组件在move功能:

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