在unityunity游戏开发过程中,敌人、怪物的自动巡逻肯定是无法避免的,今天主要讲 给敌人和怪物设置定点巡逻。
在给怪物、敌人设置顶点巡逻的时候需要引入命名空间using UnityEngine.AI;文章来源:https://www.toymoban.com/news/detail-512272.html
public class Spider : MonoBehaviour {
private NavMeshAgent agent;//给怪物添加制动巡航组件
private Animator an;//获取新动画
public Transform[] waypoints;//创建一个对象数组,把需要导航的位置存入进去
private int index = 0;
private float timer = 0;
private float times = 3;
private Transform player;
// Use this for initialization
void Start () {
agent = GetComponent<NavMeshAgent>();//
an = GetComponent<Animator>();
agent.destination = waypoints[index].position;
player = GameObject.FindWithTag("Player").transform;
}
// Update is called once per frame
void Update () {
float dir = Vector3.Distance(player.position, transform.position);//获取玩家距离敌人的距离
if(dir > 2 && dir < 5)//追踪
{
Track();
}
else if(dir <= 2)//攻击
{
Attack();
}
else
{
Patrol();
}
}
void Track()
{
//transform.LookAt(player.position);//给定条件看向玩家 这行代码可以不用
agent.SetDestination(player.position);//自动导航到玩家的位置
}
void Attack()//攻击
{
agent.ResetPath();//停止导航
transform.LookAt(player.position);
an.SetTrigger("Attack");
}
void Patrol()//自动导航
{
if (agent.remainingDistance < 0.5f)//在自动巡航到0.5m后进入这个判断条件
{
an.SetInteger("walk",0);
timer += Time.deltaTime;
if (timer >= times)
{
timer = 0;
index++;
index %= 4;//给怪物巡逻几个点位就给几
agent.SetDestination(waypoints[index].position);//继续网下一个位置导航
}
}
else
{
an.SetInteger("walk", 1);//播放动画
}
}
}
这里写了怪物自动巡逻,当玩家靠近到一定距离,停止巡逻,走向玩家,叫指定范围,敌人开始攻击玩家。文章来源地址https://www.toymoban.com/news/detail-512272.html
到了这里,关于unity敌人的巡逻的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!