前言
本篇是游戏内的数学物理知识补充,读者看完后可自行回去看之前的教程。
游戏个体模拟真实的运动行为
在前面章节,我们讲解到怪物、士兵行走是具备类生命体般的运动特征的(可以理解为赋予了AI智能),在类VectorElements
里,我们实现了这部分功能。我们先讲解实现理论,再回头看VectorElements
的实现。
转向行为
转向行为(steering behaviors)这一术语,指的是一系列使对象行动起来像似长有智商的算法。这些行为都归于人工智能或人工生命一类,是让对象呈现出拥有生命一般,对如何移动到目的地、捕捉或逃避其它对象、避开障碍物、寻求路径等做出因地适宜的决定。
要想让个体靠近目标,分为两步:
seek – 寻找:角色试图移动到一个指定点arrive – 到达:和寻找相同,除了角色的速度在接近目的地时会减慢,最终以一个渐变运动恰好停留在目标处
以下所有实现都在游戏帧更新里计算。
一个个体在位置(x,y),并且它的速度是(a, b)。它的移动用欧拉积分表示为
position = position + velocity
seek
实现Steering所涉及到的所有运算都可以用向量计算来实现,而Steering系统产生的力会运用在游戏个体的速度和位置更新上,所以最好是用向量来表示物体的速度和位置。
Seek行为被分解为两个力ÿ