
270
|
第
9
章
讨论
当我们想拦截一个运动物体时,我们其实是想将对象移动到目标对象即将到达的某
个位置,而不是目标对象的当前位置。如果仅仅是运动到目标对象的当前位置,你
永远都追不上它。
因此,我们应该根据目标对象当前位置和它的运动速度计算出目标对象将到达哪个
位置,以及你和它之间的距离,才能最终抓到它。
9.5
逃逸
问题
我们想让一个物体逃脱另一个对象的追逐。
解决方案
使用“
move to
”方法,但方向相反:
var offset = target.position - self.position
//
使
offset
和我们的移动速度相同
offset = offset.normalized
//
注意负号,我们乘上移动速度后取一个相反的反向,
//
表明我们将逃离目标
offset *= CGFloat(-self.movementSpeed) * deltaTime
//
将
offset
加到当前位置
let newPosition = self.position + offset
self.position = newPosition
讨论
逃离目标和向目标移动极其相似。不同的是我们将移动速度改成了相反方向。这样
我们就会得到一个与目标方向相反的向量。