——《unity人工智能游戏开发》的书和siki学院《Unity游戏开发人工智能编程》视频的笔记
集群行为,如果直接控制往目的前进,会统一前进,而感觉太机械化,所以要进行一定的运算,使得集群行为真实。可以看书本会比较详细,以下介绍大概原理。
集群中的力有三个,分离力,队列力,聚集力。
//分离力各变量
public Vector3 SeparationForce = Vector3.zero;//受分离力大小
public float SeparationDistance = 3;//分离力影响范围
public float SeparationWeight = 1;//分离力权重,可以在游戏效果微调
public List<GameObject> SeparationNeibour=new List<GameObject>();//范围内的游戏物体
//分离力计算
SeparationNeibour.Clear();
//如果想知道Physics.OverlapSphere作用可以到:
//个人笔记:https://blog.csdn.net/weixin_43701019/article/details/96841907
Collider[] colliders= Physics.OverlapSphere(transform.position, SeparationDistance);
foreach(Collider collider in colliders)
{
if(collider.gameObject != gameObject)
{
SeparationNeibour.Add(collider.gameObject);
}
}
foreach(GameObject go in SeparationNeibour)
{
Vector3 SepatationDir=(transform.position-go.transform.po