
人工智能和行为
|
269
self.run(sequence)
}
讨论
本例演示了如何让一个对象沿路径行驶,但要获取这个路径,需要你自己指定,或
者使用路径算法算出(参见
9.9
节)。
9.4
拦截运动物体
问题
我们想让一个对象向另一个对象运动并拦截它。
解决方案
首先对目标对象将移动到哪个位置进行预判,这就需要事先知道它的速度。然后使
用“
move to
”算法(参见
9.2
节),让对象向那个位置运动。
let toTarget = target.position - self.position
let lookAheadTime = toTarget.length / CGFloat(self.movementSpeed
+ target.movementSpeed)
let destination = target.position
+ (CGFloat(target.movementSpeed) * lookAheadTime)
self.moveToPosition(targetPosition: destination, deltaTime:deltaTime)
图
9-1
演示了计算结果。
图
9
-
1
:拦截一个运动物体