群组行为指的是多个对象组队同时进行的情况。每个boid需满足分离,队列,凝聚三个基本的规则。
分离:群组中的每个个体都与相邻的个体保持一定的距离。
队列:群组以相同的速度,向相同的方向移动。
凝聚:与群组的中心保持最小距离。
参见:http://www.red3d.com/cwr/boids/
结构:
控制器:即头鸟下有controller类来控制自身的移动。
个体成员:单独的个体,通过引用控制器的位置信息来产生群组跟随的效果。
群组中的个体:
1 using UnityEngine; 2 using System.Collections; 3 4 5 /// <summary> 6 /// 该类是对群体中的每个个体行为的约束,即单个的鸟 7 /// </summary> 8 public class UnityFlock : MonoBehaviour 9 { 10 11 //最小速度,转向速度,随机频率,随机力 12 public float minSpeed = 20.0f; 13 public float turnSpeed = 20.0f; 14 public float randomFreq = 20.0f; 15 public float randomForce = 20.0f; 16 17 //队列属性 :向心力,向心区间,吸引力 18 public float toOriginForce = 50.0f; 19 public float toOriginRange = 100.0f; 20 21 public float gravity = 2.0f; 22 23 //分离属性:规避力,规避半径 24 public float avoidanceForce = 20.0f; 25 public float avoidanceRadius = 50.0f; 26 27 //凝聚属性:追随速度,追随半径(相对于领导者即头鸟) 28 public float followVelocity = 4.0f; 29 public float followRadius = 40.0f; 30 31 32 //控制单个个体运动的属性:父对象即头鸟,速度,归一化速度,随机推力,父对象的推力。。。 33 private Transform origin; 34 private Vector3 velocity;