角色的逻辑、数据、动画
我最近学习到了一些关于UE4中AI部分的内容,现在我想制作一个动物的AI,那么它的主体逻辑应该放在哪里呢?
数据集
首先角色一定有一个数据集,这个数据集表示了这个角色的各种信息和状态,比如饥饿,口渴,生命值,移动速度,等等。考虑到同一类角色有多个实例,比如同样是动物,复用一样的数据,但是有一些是有差异的,比如最大移动速度,饥饿消耗的速度,因此有一些数值是配置项,有一些数值是动态运行时计算出来的。因此我将这个数据集的数据分成2部分,一部分叫static config,另一部分是dynamic的,static config 经过逻辑的处理,就可以得到 dynamic 的数据。

谁来驱动数据变化?
考虑到分为玩家和AI控制两类,那么应该是有两种控制来源,一是玩家的输入,另一个是来自AI的逻辑。角色的速度为什么会改变,为什么要朝向某个方向移动?为什么要进行攻击?对于玩家控制的角色来说,是因为玩家提供了输入,对于AI控制的角色来说,是AI的逻辑告诉它要怎么做。
另外,为什么hungry会随时间流逝而减少,显然,时间也是一项推动数据变化的关键因素。

数据集来驱动动画
接下来,数据集就成了动画的依据,比如为什么要执行移动的动画,哦,是因为有了移动速度,为什么玩家移动要一瘸一拐的,是因为它的腿部受伤了,或者hp不是满的。
总之,播放什么动画依赖于数据集。
但是动画同时也会对数据集进行修改,表示当前进行的状态,比如类似黑魂的游戏中,你在攻击的时候无法移动,改变朝向的角度也被限制了。因为当前在播放攻击动画,所以动画的很多事件,会影响到数据集,从而再对玩家操控角色的逻辑或者其他方面做影响。
