群组行为说的是一群人,或物执行一样的东西,比如说走路,但是不能很规律的执行,有人工智能的感觉的去执行走路,更加真实的去模拟现实,变得更加符合实际情况。
这里我就模拟了一下群组走路的一个情况,为了避免有的小伙伴的密集恐惧症,这里我就不上效果图了,大家自行看脚本,编写一下试试看吧,下面先贴出完整脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AIGroupMath : MonoBehaviour {
//质量
public float m = 1f;
//加速度
public Vector3 velocity = Vector3.zero;
//函数调用间隔
public float time = 0.2f;
//运动速度
public float speed = .1f;
//目标点
public Transform target;
//前进方向
public Vector3 sumDir = Vector3.zero;
//分离范围
public float separationScop = 1.5f;
//分离方向
public Vector3 separationDir = Vector3.zero;
//分离范围内的所有成员
public Collider[] separationNeghbar;
//分离比重
public float separetionWeigth = 1f;
//聚合范围
public float cohisionScop = 6f;
//聚合方向
public Vector3 cohisionDir = Vector3.zero;
//聚合范围内的所有成员
public Collider[] cohisionNeghbar;
//聚合比重
public float cohisionWeigth = 1f;
//队列范围
public float alignmentScop = 3f;
//队列范围内的成员
public Collider[] alignmentNeghbar;
//队列方向
public Vector3 alignmentDir = Vector3.zero;
//队列比重
public float alignmentWeigth = 1f;
//队列成员方向和
public Vector3 alignmentsDir = Vector3.zero;
private void Start()
{
target = GameObject.Find("Target").transform;
InvokeRepeating("GetSumDir", 0, time);
}
/// <summary>
/// 得到一个总的方向
/// </summary>
public void GetSumD