自学内容网 自学内容网

十、敌人锁定

方法:通过寻找最近的敌人,使玩家的面朝向始终朝向敌人,进行攻击

1、代码

在这个方法中使用的是局部变量,作为临时声明和引用

public void SetActorAttackRotation()
{
Enemys = GameObject.FindGameObjectsWithTag("Enemy");

GameObject NearestEnemy = null;
float MinDistance = 1000;
Vector3 CurrentPos = transform.position;

foreach (GameObject enemy in Enemys)
{
float distance=Vector3.Distance(enemy.transform.position,CurrentPos);
if (distance < MinDistance)
{
NearestEnemy = enemy;
MinDistance = distance;
}
}
Vector3 NEnemyPos = NearestEnemy.transform.position;
NEnemyPos.y = transform.position.y;
transform.LookAt(NEnemyPos);

}

首先,建一个敌人数组

使用一个寻找Tag的方法,查找场景中所有敌人的物体

最近的敌人初始化为空,因为需要判断哪一个最近,然后赋值给他

定义一个局部变量 最小距离,此处距离设置的比较大

然后把玩家的当前位置赋值给CurrentPos,也就是当前的点

此时,开始遍历场景中所有的敌人在Enemys数组中

先定义一个向量值 :从玩家的点到敌人的位置

如果这个向量值小于了最小的距离,那么这个敌人就是最近的敌人,

当前的距离也就是最小的距离。

注意:这个遍历方法类似冒泡排序,

这里的局部变量设置的值,其实并不是影响很大,要在if语句中重新将距离赋值给最小距离

最下面三行的作用是:

始终让玩家的视角看向锁定的敌人


原文地址:https://blog.csdn.net/akjhgi/article/details/142706307

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!