【发布时间】:2017-05-20 02:34:22
【问题描述】:
我正在使用 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")
}
}
有人对这个问题有想法吗?
【问题讨论】:
标签: ios swift sprite-kit