赞
踩
队列行为视图保持AI角色的运动朝向与邻居一致,这样就会得到像鸟群朝着一个方向飞行的效果。
通过迭代邻居,可以求出AI角色朝向向量的平均值以及速度向量的平均值,得到想要的朝向,然后减去AI角色的当前朝向,就可以得到队列操控力。
C#脚本代码
using UnityEngine; namespace AI.Steering { /// <summary> /// 队列 /// </summary> public class SteeringForCohesion : Steering { //雷达 public Radar radar = new Radar(); public override Vector3 GetForce() { //通过雷达扫描得到周围邻居 var allNeighbour = radar.SanNeighbours(transform.position); //当前AI角色的邻居平均朝向 Vector3 averageDirection = new Vector3(0, 0, 0); for (int i = 0; i < allNeighbour.Length; i++) {//朝向向量进行累加 averageDirection += allNeighbour[0].transform.forward; } //将累加得到的朝向向量除以邻居的个数,求出平均朝向向量 averageDirection /= (float)allNeighbour.Length; //平均朝向向量减去当前朝向向量,得到操控向量 averageDirection -= transform.forward; return averageDirection; } } }
测试:
运行:
在Scene面板中,当你旋转其中一个物体时,其他物体的转向相同方向。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。