敌人定点巡逻

本文介绍了一个简单的Unity巡逻AI脚本实现方法。通过定义一系列的巡逻点,并利用Unity的NavMeshAgent组件,使得游戏中的角色能够自动地在这些巡逻点之间进行巡逻。该脚本能够自动检测到达一个巡逻点后切换到下一个巡逻点。
using UnityEngine;
using System.Collections;


public class xunluo : MonoBehaviour
{

    public Transform[] wz;//要巡逻的几个点
    UnityEngine.AI.NavMeshAgent b;

    int i = 0;


    void Start()
    {
        b = GetComponent<UnityEngine.AI.NavMeshAgent>();
        b.destination = wz[0].position;//默认从0角标开始巡逻

    }


    void Update()
    {
        if (b.remainingDistance < 1)当剩余距离小于一的时候换下一个点
        {
            if (i < wz.Length - 1)
            {
                i++;
            }
            else
            {
                i = 0;
            }
            b.destination = wz[i].position;




        }

    }
}
### 实现敌人角色的定点寻路 AI #### 创建导航网格 (NavMesh) 为了使敌人能够智能地移动到指定的位置,首先需要设置场景中的可行走区域。这通过 Navigation 组件来完成。 ```csharp // 导入必要的命名空间 using UnityEngine.AI; ``` 在 Unity 编辑器中: - 选择 `Window` -> `AI` -> `Navigation` - 设置哪些对象可以作为障碍物或地面,调整烘焙参数以适应游戏需求[^3] #### 设定巡逻点 为敌人定义多个目标位置即巡逻点,这些点通常分布在地图的关键位置上。可以通过空 GameObject 来标记这些地点,并赋予其特定标签以便于脚本识别。 #### 脚本编写 下面是一个简单的 C# 脚本来控制敌人巡逻行为: ```csharp public class Patrol : MonoBehaviour { public Transform[] points; // 巡逻点数组 private int destPoint = 0; // 当前目的地索引 private NavMeshAgent agent; void Start() { agent = GetComponent<NavMeshAgent>(); // 确保存在至少两个巡逻点 if (points.Length >= 2) { GotoNextPoint(); } } void GotoNextPoint() { // 如果当前位置接近下一个巡逻点了,则切换至下一点 if (!agent.pathPending && !agent.remainingDistance.HasValue || agent.remainingDistance.Value <= agent.stoppingDistance) { destPoint = (destPoint + 1) % points.Length; Vector3 direction = points[destPoint].position - transform.position; float angle = Mathf.Atan2(direction.x, direction.z) * Mathf.Rad2Deg; transform.rotation = Quaternion.Euler(0f, angle, 0f); agent.SetDestination(points[destPoint].position); } } void Update() { GotoNextPoint(); } } ``` 此代码片段实现了基本的循环巡逻机制,当到达一个巡逻点之后就会转向前往列表里的下一个点[^4]。 #### 添加组件并配置属性 最后一步是在实际的角色模型上挂载上述编写的脚本以及 `NavMeshAgent` 组件,并为其分配好各个巡逻点。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值