如上一篇文章所说的,移动算法通常分为两大类:运动学移动算法 和 动态移动算法。这篇文章主要介绍运动学移动算法,相比较而言,运动学移动算法虽然更简单,但却十分实用。
运动学移动算法输入是静态数据(位置和方向,没有速度),输出是所需的速度。输出通常只是一个开或关、或者是目标方向、以全速移动、静止。运动学算法不使用加速度,尽管速度的突然变化可能被平滑在几个帧。
许多游戏甚至将事情简化得更简单:它强迫角色的方向与它所行进的方向一致;如果角色是静止的,它要么面对一个预先设定的方向,要么面对它移动的最后一个方向。
如果它的运动算法返回一个目标速度,那么这个速度将用于设置它的方向,这可以用下面的函数简单地完成
我们将看两种运动学移动算法:追逐和漫步。建立运动学移动算法是极其简单的,所以我们将只看这两个代表性的样例。而与之对应的动态移动算法会在后续的文章中更多地介绍。
然而,我必须强调,这种简洁并不是因为它们不常见或不重要,在许多游戏中,运动学移动算法仍然是移动系统的主要组成部分。后续文章中角色移动由物理引擎控制的动态算法确实很常见,但并不是全都是这样实现的。
一、追逐
运动学追逐行为以角色的静态数据和目标的静态数据作为输入,它计算从角色到目标的方向,并请求沿着这个方向的速度。该算法可以用几行代码中实现,
其中,将 normalize 方法应用于向量将其变成单位向量