Unity多个物体进行中心区域判定
代码很简单没有难度,自己看一下应该就能明白。
后期扩展以及应用,比如鱼群算法,狼群算法,领头羊规则等。
OK 老规矩,直接上代码:
中心区域判定
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 中心区域判定
/// </summary>
public class Area_ZH : MonoBehaviour
{
[Header("边界数组")]
public List<Transform> _ListCube;
[Header("预制体")]
public Transform _PrefabCube;
[Header("生成数量")]
public int _CubeNumber = 20;
//中心坐标
private Vector3 _CentreVec;
private bool _bAgain;
void Update()
{
CentreArea();
}
/// <summary>
/// 中心区域判定
/// </summary>
public void CentreArea()
{
if (Input.GetKeyDown(KeyCode.Q))
{
//给出几个顶点的坐标,如(x1,y1),(x2, y2)...(xn, yn)
//那么中心是(x1 + x2 + ...+xn / n, y1 + y2 + ...+yn / n)(n为多边形边数)
_bAgain = !_bAgain;
if (_bAgain)
{
for (int i = 0; i < _CubeNumber; i++)
{
_ListCube.Add(Instantiate(_PrefabCube, new Vector3(Random.Range(0, 100), Random.Range(0, 100), Random.Range(0, 100)), Quaternion.identity, transform));
}
foreach (Transform item in transform)
{
_CentreVec += item.position;
}
_CentreVec /= _CubeNumber;
Instantiate(_PrefabCube, _CentreVec, Quaternion.identity, transform).name = "CentreCube";
}
else
{
if (transform.childCount >= 1)
{
for (int i = 0; i < transform.childCount; i++)
{
Destroy(transform.GetChild(i).gameObject);
_ListCube.Clear();
}
}
}
}
}
}
组件搭载:
最终效果:
暂时先这样吧,如果实在看不明白就留言,看到我会回复的。
路长远兮,与君共勉。