编辑
👨💻个人主页:@元宇宙-秩沅
hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!
本文由 秩沅 原创
收录于专栏 unity实战入门
你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!
栓Q
⭐相关文章⭐
———————————————————
-[本站最全-unity常用API大全(万字详解),不信你不收藏]
-[基于unity物体定点移动与模拟刹车的细节 GIF 图文详解]
————————————————————
目录
给人物导航
一.地形创建
1.首先我们在Hierarchy面板中创建一个地形对象terrian,自行设定地形外貌,此时我们设置一个如下的地形外观
编辑
二.创建导航系统
1.在主人公的Inspector、面板中添加Nav Mesh Agent (导航网格代理),而后点击windows-AI-Navigation(航行器),则会出现如下面板:
编辑
2.点击Bake部分,再点击下方的部分Bake可理解为烘培出可导航的区域,则会出现下图所示的蓝色指引区域:
编辑
3.添加叫脚本:
射线导航:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class navmesh : MonoBehaviour { // Start is called before the first frame update public NavMeshAgent boss;//创建一个网格导航对象Boss void Start() { } // Update is called once per frame void Update() { //利用射线来判断指引位置 if(Input .GetMouseButtonDown (0))// 当按下鼠标右键时运行 { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //相当于发射光线ray 让其获得由当前相机屏幕前鼠标点击处转化来的射线点位置 RaycastHit store; //创建Raycastthit类型的对象,为下面让其保存射线碰撞的位置的信息做铺垫 //RaycastHit 意思为光线投射碰撞 //Raycast 则是光线投射 if(Physics .Raycast(ray ,out store ) ) //此时调用内置的方法,按输出传递参数Out,返回值为两个,一个给了store另一个返回ture { boss.SetDestination(store.point); //此时游戏物体boss接下来要到达的位置已经生成 } } } }
编辑
此时鼠标点击相应的位置人物立即换成跑步的动画,那么达成这个效果还需要和动画系统做练习,(动画系统的生成见主页),那么此时联系代码的关键语句为:
bboss.SetFloat("speed", boss.velocity.magnitude);
//给动画对象设置一个float类型的参数,该参数的名称为“speed”,值为网格导航对象boss的速度的值
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class navmesh : MonoBehaviour { // Start is called before the first frame update public NavMeshAgent boss;//创建一个网格导航对象Boss public Animator bboss; //用于人物动画切换的参数 void Start() { } // Update is called once per frame void Update() { //利用射线来判断指引位置 if(Input .GetMouseButtonDown (0))// 当按下鼠标右键时运行 { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //相当于发射光线ray 让其获得由当前相机屏幕前鼠标点击处转化来的射线点位置 RaycastHit store; //创建Raycastthit类型的对象,为下面让其保存射线碰撞的位置的信息做铺垫 //RaycastHit 意思为光线投射碰撞 //Raycast 则是光线投射 if(Physics .Raycast(ray ,out store ) ) //此时调用内置的方法,按输出传递参数Out,返回值为两个,一个给了store另一个返回ture { boss.SetDestination(store.point); //此时游戏物体boss接下来要到达的位置已经生成 bboss.SetFloat("speed", boss.velocity.magnitude); //给动画对象设置一个float类型的参数,该参数的名称为“speed”,值为网格导航对象boss的速度的值 } } } }
以上就是简单的导航系统,学到的话,点个赞同再走吧,码友~
⭐相关文章⭐
———————————————————
-[本站最全-unity常用API大全(万字详解),不信你不收藏]
-[基于unity物体定点移动与模拟刹车的细节 GIF 图文详解]
————————————————————
你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!