十、敌人锁定

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

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语句中重新将距离赋值给最小距离

最下面三行的作用是:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值