【Unity学习笔记】——使用unity自带寻路系统进行寻路
2017-07-27 15:50
447 查看
自动寻路步骤:
① 把场景中不动的物体勾选static
② 烘焙寻路网格
③ 添加NavMeshAgent组件
④ 给需要寻路的物体添加脚本
实现:
① 搭一个简易场景
放上enemy和player:
把场景设为静态
选择window→navigation,调出navigation面板,选择bake,形成一个蓝色路面,enemy将在这个蓝色路面上进行寻路
给寻路者(敌人)添加NavMeshAgent组件
把下面脚本挂到enemy上
运行,enemy自动靠近player
但是enemy和player会重合在一起
调Stopping Distance
如果没有player,点击哪就让AI往哪寻路呢?
把下面脚本挂到Camera上,为AI添加NavMeshAgent组件,同样需要烘焙一个NavMash
① 把场景中不动的物体勾选static
② 烘焙寻路网格
③ 添加NavMeshAgent组件
④ 给需要寻路的物体添加脚本
实现:
① 搭一个简易场景
放上enemy和player:
把场景设为静态
选择window→navigation,调出navigation面板,选择bake,形成一个蓝色路面,enemy将在这个蓝色路面上进行寻路
给寻路者(敌人)添加NavMeshAgent组件
把下面脚本挂到enemy上
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; /// <summary> /// 寻路算法 /// </summary> public class NavTest : MonoBehaviour { private NavMeshAgent agent;//寻路者 public Transform target;//寻路目标 private void Start() { agent = this.GetComponent<NavMeshAgent>(); } private void Update() { if(agent!=null) { agent.SetDestination(target.position);//寻路算法 } } }
运行,enemy自动靠近player
但是enemy和player会重合在一起
调Stopping Distance
如果没有player,点击哪就让AI往哪寻路呢?
把下面脚本挂到Camera上,为AI添加NavMeshAgent组件,同样需要烘焙一个NavMash
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class RayTest : MonoBehaviour { private Ray ray; private RaycastHit hit;//射线碰到的碰撞信息 public GameObject navPlayer;//寻路的人 private NavMeshAgent agent; private void Start() { agent = navPlayer.GetComponent<NavMeshAgent>(); } private void Update () { //射线起始位置 ray = Camera.main.ScreenPointToRay(Input.mousePosition); if(Physics.Raycast(ray,out hit, 100) && Input.GetMouseButtonDown(0)) { agent.SetDestination(hit.point); Debug.DrawLine(ray.origin, hit.point, Color.red); } } }
相关文章推荐
- cocos2d-x学习笔记(八)使用NDK自带的iconv进行编码转换
- Quick cocos2dx-Lua(V3.3R1)学习笔记(十二)----使用Cocos Code IDE 配合自带的PrebuiltRuntimeLua.apk进行真机调试
- Quick cocos2dx-Lua(V3.3R1)学习笔记(十二)----使用Cocos Code IDE 配合自带的PrebuiltRuntimeLua.apk进行真机调试
- [EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART1——为什么要使用Unity?
- 微软企业库4.1学习笔记(十四)缓存模块2 使用缓存模块进行开发
- Unity 学习笔记(1) — Unity简介及简单使用
- 微软企业库4.1学习笔记(十四)缓存模块2 使用缓存模块进行开发
- (转)[EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART2——了解Unity的使用方法(3)
- [EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART2——了解Unity的使用方法(2)
- 微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART5——使用Unity自身的拦截器
- [EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART2——了解Unity的使用方法(1)
- Vmware学习笔记之一:使用windows系统文件
- (转)[EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART3——依赖注入
- [EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART4——Unity&PIAB
- (转)[EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART1——为什么要使用Unity?
- 学习笔记: Struts2中使用validate框架对Action的不同方法进行验证
- 学习笔记 如何使用svnsync命令对SVN库进行备份
- [EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART2——了解Unity的使用方法(3)
- 【转】ant学习笔记之(ant执行命令的详细参数和Ant自带的系统属性)
- [EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART3——依赖注入