当前位置: 首页 > article >正文

unity航点寻径

一、游戏框架:设置了六个路标,角色会在这六个路标之间一次移动,当移动到第六个路标后又会返回第一个路标,继续依次移动。

      

road: 道路,由五个立方体组成

sign:路标,由六个胶囊组成

enemy:寻路的角色

二、游戏实现:

1、创建一个平面,赋予图案使界面美观

2、创建一个空物体命名为road,创建五个立方体用来摆放成路的形状,要注意把立方体的y轴调小一点

3、创建一个空物体命名为sign,创建六个胶囊用来作为路标,并以此给他们的tag改为sign0-sign5

4、创建一个球命名为enemy,赋予颜色,添加组件Nav Mesh Agent,编写代码赋予enemy

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class Enemyfindway : MonoBehaviour
{
    NavMeshAgent pathfinder;
    Transform target;
    private int num;
    private string playername;
    void Start()
    {
        num = 0;
        playername = "sign" + num;
        pathfinder = GetComponent<NavMeshAgent>();
        target = GameObject.FindGameObjectWithTag(playername).transform;
    }
    void FixedUpdate()
    {
        move();
    }

    private void move()
    {
        Debug.Log("num: " + num);
        Debug.Log("sign:" + playername);
        target = GameObject.FindGameObjectWithTag(playername).transform;
        pathfinder.SetDestination(target.position);
        num = (num + 1) % 6;
        playername = "sign" + num;
    }
}

5、网格烘焙,设置plane和road中的五个立方体为可行走区域Windows->AI->navigation,选中plane进行设置,具体可烘焙方法可参照下面这个链接敌人追逐玩家、路径烘焙

 6、设置FixedUpdate的间隔时间,默认的时间使0.02秒,不足以让enemy从一个路标移动到另一个路标,所以需要把间隔时间加大,edit->project settings,找到Time,把Fixed Timestep改为5

7、点击运行后可以看到小球从第一个路标移动一次移动到第五个路标然后又回到第一个路标一次循环。


http://www.kler.cn/news/17805.html

相关文章:

  • js中对象和数组的都是如何解构的
  • 二挡起步——pythonweb开发Django框架,前端原生+Django后端框架+python网络抓包(代替数据库数据)(附带小案例)
  • Java学习之Swing图形界面
  • 关于面试官问Qt Connect的链接方式和类型问题
  • jQuery -- 常用API(下)
  • 《Netty》从零开始学netty源码(五十二)之PoolThreadCache
  • SpringBoot整合FreeMarker
  • 使用zabbix监控Windows指定服务| zabbix Windows service filter
  • 【网络】4万字细品TCP协议
  • yolov8 OpenCV DNN 部署 推理报错
  • 科大版中国版ChatGPT来啦!抢先体验
  • 还能这么玩?清华给 ChatGPT 做逆向,发现了 ChatGPT 的进化轨迹!
  • 记一次产线打印json导致的redis连接超时
  • 【算法】Check If Word Is Valid After Substitutions 检查替换后的词是否有效
  • MySQL高频面试题
  • 多通道振弦传感器无线采集仪通过短信和FTP文件修改参数
  • 设计原则之【接口隔离原则】
  • 22.Java多线程
  • SpreadJS 16.1 EN + SpreadJS 16.1 CN Crack
  • 【Linux】linux进程间通信netlink socket(用户与内核通信)
  • PBDB Data Service:Special parameters(特殊参数)
  • 公司新来的00后真是卷王,工作没2年,跳槽到我们公司起薪18K都快接近我了
  • JAVA原生语言开发多学校Saas模式校园管理系统
  • LT8471IFE#PBF-ASEMI代理亚德诺LT8471IFE#PBF原厂芯片
  • 文件操作和IO
  • 机器视觉工程师,听我一句劝,别去外包,干了三年,废了....对女人没了兴趣
  • 【Unity编辑器】拓展Project视图
  • 复兴号列车司机室
  • Midjourney之logo设计(建议收藏)
  • 杂乱之Android的字体相关类Typeface