Unity3D-敌人巡逻以及追击玩家

本文介绍了如何在Unity游戏中使用NavMeshAgent和Transform实现敌人的自动巡逻以及在触发玩家时的追击功能,包括设置巡逻点、导航、多点巡逻和碰撞检测逻辑。
摘要由CSDN通过智能技术生成

一、追击玩家

当玩家进入到了敌人的触发器范围便追击玩家

准备:四个巡逻点 一个敌人 一个玩家角色

实现步骤:(我喜欢把所有的GameObject、Transform都设为public 因为发生bug是可以直到是哪个组件或者是物体设置错了)

1、用一个Transform 类型的变量来保存巡逻点的Transform信息

public Transform infoPoint;

2、创建一个列表来保存巡逻点

public List<Transform> list;  

3、 将所有的巡逻点添加到列表中

void AddToList()

{

        foreach(Trasnform t in infoPoint)

        {

                list,Add(t);

        }

}

// 这三步可以省略因为可以在游戏里通过拖拽设置巡逻点

4、设置巡逻点下标

public int location;

5、设置导航

public public NavMeshAgent agent;

agent = GetComponent<NavMeshAgent>();

6、移动至下一个巡逻点,并且在Start中调用

void Move()

{

        agent.destination = list[location].position

}

7、设置多点巡逻  

void Update()
{
    if (agent.remainingDistance < 0.2f && !agent.pathPending)  // 是敌人只有一种移动方式
    {
        Move();
    }
}

void Move()

{

        if(location,Count==0){return;}

        agent.destination = list[location].position

        location = (loaction + 1) % list.Count;

}

8、追击玩家

public Transform player  // 追击玩家 实际上是让敌人的坐标位置变成玩家的位置

player = GameObject.FindGameObjectWithTag("Player");

void OnTriggerEnter(Collider other)
    {
        if(other.gameObject.tag== "Player")
        {
            Debug.Log("hello");
            agent.destination = player.position;  // 可以在此处添加销毁玩家的逻辑
        }
    }

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Miracle840

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值