周学习笔记

学习笔记

一、Unity3D操作行为编程的主要基类

1.将AI角色抽象成一个质点——Vehicle类

在AI构架模型种,操控AI角色的基类Vehicle把操作的对象抽象为一个质点,它不仅包含位置((position),质量(mass),速度(velocity)等信息,还需要最大力(max_fore)和最高速度(max_speed)两个信息。除此之外还要包含一个朝向(orientation)的信息。

位置的计算方法:

(3)确定每一帧的当前操控力(最大不超过max_force);

(2)除以交通工具的质量mass,可以确定一个加速度;

(3)将这个加速度与原来的速度相加,得到新的速度(最大不超过max_speed ) ;

(4)根据速度和这一帧流逝的时间,计算出位置的变化;

(5)与原来的位置相加,得到“交通工具”的新位置。

2.控制AI角色移动——AlLocomotion类

AILocomotion类是Vehicle的派生类,它能真正控制AI角色的移动,包括计算每次移动的距离,播放动画等,下面是一个示例实现。

3.各种操控行为的基类——Steering类

Steering类是所有操控行为的基类,包含操控行为共有的变量和方法,操控AI角色的寻找、逃跑、追逐、躲避、徘徊、分离、队列、聚集等都可由此派生。这样,我们就可以在Unity3D中的C#脚本中方便地使用上述派生类来编程了。

二、个体AI角色的操控行为

1.靠近

操控行为中的靠近是指,指定一个目标位置,根据当前的运动速度向量,返回一个操控AI角色到达该目标位置的“操控力”,使AI角色自动向该位置移动。

2.离开

离开和靠近行为正好相反,它产生一个操控AI角色离开目标的力,而不是靠近目标的力。它们之间唯一的区别是DesiredVelocity具有相反的方向。

3.抵达

有时我们希望AI角色能够减速并停到目标位置,避免冲过目标,例如,车辆在接近十字路口时逐渐减速,然后停在路口处,这时就需要用到抵达行为。

4.追逐

追逐行为与靠近行为很相似,只不过目标不再是静止不动,而是另一个可移动的角色。最简单的追逃方式是直接向目标的当前位置靠近,不过这样看上去很不真实。举例来说,大家都知道,当动物追逐猎物的时候,绝不是直接向猎物的当前位置奔跑,而是预测猎物的未来位置,然后向着未来位置的方向追去,这样才能在最短时间内追上猎物。在AI中,把这种操控行为称为“追逐”。

5.逃避

逃避行为是指使猎物躲避捕猎者。举例来说,鹿被狼追逐,鹿要不断变换逃跑方向,试图逃离狼预测的追逐方向。

6.随机徘徊

随机徘徊操控行为就是让角色产生有真实感的随机移动。这会让玩家感觉到角色是有生命的,而且正在到处移动。

7.路径跟随

就像赛车在赛道上需要导航一样,路径跟随会产生一个操控力,使AI角色沿着预先设置的轨迹,构成路径的一系列路点移动。

你可能感兴趣的:(人工智能)