在看插件案例时,发现了一个利用NavMeshAgent组件来限制玩家移动范围的用法。感觉挺有意思的,就先记录下来。

1.原理

其实挺简单的,就是agent在移动到边缘时,因为无法再向前了,NavMeshAgent中的Speed就会自动为零,于是把这个变量乘到实际的移动里就可以了。

2实现

具体代码如下:

using UnityEngine;
using UnityEngine.AI;[RequireComponent(typeof(NavMeshAgent))]
public class MoveByNavi : MonoBehaviour
{private NavMeshAgent _agent;private Vector3 _moveDir;/// <summary>/// 移动方向(世界坐标)/// </summary>public Vector3 MoveDir{get { return _moveDir; }set { _moveDir = value.normalized; Move(_moveDir); }}/// <summary>/// 判断是否在移动/// </summary>public bool IsMove {get { return _agent.velocity != Vector3.zero; }}[HideInInspector]public float Speed;private void Awake(){_agent = GetComponent<NavMeshAgent>();_agent.speed = 1;}private void Move(Vector3 movDir){transform.Translate(movDir * _agent.speed * Speed);}#region TestInput/// <summary>/// just for test/// </summary>public float SpeedVal;private void Update(){Vector3 mov = InputDirViewToWorld(Camera.main.transform);if (mov != Vector3.zero){Speed = SpeedVal * Time.deltaTime;MoveDir = mov;}}/// <summary>/// 将用户输入方向从摄像机空间转换到世界空间/// </summary>/// <param name="Cam">摄像机的Transform</param>/// <returns>返回世界空间下的方向</returns>public Vector3 InputDirViewToWorld(Transform Cam){Vector3 tempMov = Vector3.zero;float horInput = Input.GetAxisRaw("Horizontal");float vertInput = Input.GetAxisRaw("Vertical");if (horInput != 0 || vertInput != 0){tempMov.x = horInput;tempMov.z = vertInput;tempMov = Vector3.ClampMagnitude(tempMov, 1);Quaternion temp = Cam.rotation;Cam.eulerAngles = new Vector3(0, Cam.eulerAngles.y, 0);tempMov = Cam.TransformDirection(tempMov);Cam.rotation = temp;}return tempMov;}#endregion
}

后面的输入代码只是测试方便用,最主要的函数就是其中的move。

效果

适用范围

1.有靠NaviAgent移动的NPC,且玩家和NPC的移动范围一致。
2.简单场景快速实现限制移动范围。

利用导航网格限制玩家移动范围相关推荐

  1. 了解导航网格 Navigation Mesh

    原文:https://www.jianshu.com/p/490a9128b248 这篇文章,首先会介绍什么是导航网格,它在 3D 游戏中起到了什么样的作用.然后会介绍目前导航寻路最常用的第三方开源库 ...

  2. 《UnityAPI.NavMeshAgent导航网格代理》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Unity+NavMeshAgent+立钻哥哥++OK++)

    <UnityAPI.NavMeshAgent导航网格代理> 版本 作者 参与者 完成日期 备注 UnityAPI_NavMeshAgent_V01_1.0 严立钻 2020.09.10 # ...

  3. 【Unity VR开发】结合VRTK4.0:导航网格限制移动区域

    前言: 当别人质疑你的时候千万不要当一回事,因为他只是看到了表面,也不要去相信公司领导给你的承诺,在你付出的时候,他会觉得很满意,但过去了这风波,你就会像空气一样,什么也不是,你永远没有资格跟他说三道 ...

  4. 《UnityAPI.NavMesh导航网格》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Unity+NavMesh+CalculatePath+立钻哥哥++OK++)

    <UnityAPI.NavMesh导航网格> 版本 作者 参与者 完成日期 备注 UnityAPI_NavMesh_V01_1.0 严立钻 2020.08.27 #<UnityAPI ...

  5. [unity3d]recast navigation navmesh 导航网格 寻路算法 源码分析

    recast navigation navmesh导航网格算法源码分析 Author:  林绍川 recast navigation navmesh是unity3d ue4内置的寻路算法 本文为了方便 ...

  6. UE4学习-AI导航网格的创建及修改

    文章目录 添加NavMeshBoundsVolume 调整网格 添加NavMeshBoundsVolume 如图所示,查找到NavMeshBoundsVolume,添加到场景. 因为我这里的场景大小是 ...

  7. Unity --- 导航网格 与 导航的使用

    导航网格和导航组件有关 这个导航组件有啥用呢? --- 答案就是用来进行寻路的 这个导航组件不仅帮我们获取对应的导航信息,而且还会帮我们进行位置的移动 有了导航组件的话,我们的游戏物体将会具有自动绕过 ...

  8. Unity3D导航网格,矩阵旋转,欧拉旋转

    旋转(欧拉.矩阵) 1.Transform:position(平移).rotation(旋转).scale(缩放). 2.四元数:应于transform组件中的rotation属性,这个属性的类型其实 ...

  9. 游戏中的心理学:利用归因错误让玩家更爱你的游戏

    游戏中的心理学:利用归因错误让玩家更爱你的游戏 发布于:2014-03-25 11:10阅读数:651 什么是基本归因错误? 在本文开始之前,先让我们来思考一个问题:当你在玩一个闯关游戏的时候失败了, ...

最新文章

  1. OpenYurt — Overview
  2. Win10:tensorflow学习笔记(4)
  3. where和having的区别
  4. easyexcel 填充模板 格式变了_Qamp;A | 如何制作规范的电子合同模板?
  5. IPHONE 开发 9 -- Object C static关键字,数组对象,词典,动态词典,集合对象,函数调用关系...
  6. Mac ssh-key 对应git账户
  7. Oracle体系结构三(学习笔记)
  8. java 基础知识九 类与对象
  9. 单目深度估计论文(1)— Depth Map Prediction from a Single Image using a Multi-Scale Deep Network (NIPS 2014)
  10. Redis_21_RedisCluster集群版搭建和SpringBoot的使用(实践开发类)
  11. 分销小程序功能有哪些?如何使用分销小程序实现裂变卖货?
  12. 使用线程安全型双向链表实现简单 LRU Cache 模拟
  13. 如何使用阿里云服务器搭建个人简历网站
  14. 【烈日炎炎战后端】设计模式(1.1万字)
  15. Centos7.6离线安装显卡驱动
  16. ARM开发板如何安装Linux系统
  17. 使用VMware测试U盘启动盘是否制作成功
  18. Adobe Fireworks CS5 | Adobe Dreamweaver CS5 | Adobe Photoshop CS5 Extended 绿色精简版最新下载地址...
  19. 曲师大计算机技术专研毕业,今天,我们从曲师大毕业了!
  20. 【JokerのKintex7325】SDK程序从QSPI启动过慢分析。

热门文章

  1. 想要把日志在两个blog同步太过麻烦了
  2. SpringBoot教程
  3. java有道翻译_Java 调用 有道翻译API
  4. 支持专业设计师的高端样机素材网
  5. 设计师如何了解行业方向?推荐设计师交流平台
  6. 电商主题BANNER传统促销喜庆红色节日海报,C4D打造时尚场景
  7. 设计界新人不用再苦找资源网站啦!一流导航神器收藏起来!
  8. pcm转换在线工具_有木有好用的CAD格式转换工具可以推荐?在线等,挺急的
  9. C++ zip压缩库使用
  10. Linux 下Shell脚本中的加减乘除运算