
268
|
第
9
章
这种从当前位置移动到另一个位置的方法是所有运动的基础,其他任何对象都能以
这种方式移动。
9.3
跟随路径
问题
我们想让对象沿着一定的路径从一点移动到另一点,同时始终指向正在驶向的目标。
解决方案
假设我们有一个路径,这个路径可以以多个点的形式保存到一个数组中。首先向其
中的第一点移动,当到达这个点后,从列表中删除这个点,再继续向列表中当前最
新的第一个点移动。
这是一个基于
Sprite Kit
(第
6
章)的例子:
func moveAlongPath(points: [CGPoint]) {
//
空路径,什么也不做
if points.count == 0 {
return
}
//
遍历
points
数组,添加一个动作,
//
从起点移动到当前遍历到的点
var currentPoint = self.position
var actions : [SKAction] = []
for point in points {
//
计算出当前位置与
point
的距离,再根据移动速度
//
计算出应该移动的距离
let distance = (currentPoint - point).length
let time = distance / CGFloat(self.movementSpeed)
//
创建一个
move-to
动作
let moveToPoint = SKAction.move(to: point, duration: ...