public void OnGetEnemy(Transform player, int radius, int angle)
{
List<GameObject> mList = new List<GameObject>();
//球形射线检测,得到主角半径2米范围内所有的物件
Collider[] cols = Physics.OverlapSphere(player.position, radius);
//判断检测到的物件中有没有Enemy
if (cols.Length > 0)
{
for (int i = 0; i < cols.Length; i++)
//判断是否是怪物
if (cols[i].tag.Equals("Enemy"))
{ //判断敌人是否在主角前方60度范围内
Vector3 dir = cols[i].transform.position - player.position;
if (Vector3.Angle(dir, player.forward) < angle)
{
mList.Add(cols[i].gameObject);
}
}
float distance_min = 10000; //主角与怪物的最近距离
float distance = 0; //当前怪物与主角的距离
int id = 0; //与主角最近的怪物的编号
//遍历所有敌人,计算距离并比较
for (int i = 0; i < mList.Count; i++)
{
distance = Vector3.Distance(transform.position, mList[i].transform.position);
if (distance < distance_min)
{
//找到一个更近的
distance_min = distance;
id = i;
}
}
if (mList.Count > 0)
{
Vector3 targetPos = mList[id].transform.position;
//攻击点面向怪物
targetPos.y = this.transform.position.y;
this.transform.LookAt(targetPos);//使主角望向距离最近的敌人并开始攻击
targetPos.y = targetPos.y + 1;
attackPoint.LookAt(targetPos);
}
// cols[i].GetComponent<BaseHero>().OnTakeDamage();
}
return;
}