// Nav层名字-->层的值,1、2、4、8、16
public static int AgentLayerNameToValue(string name)
{
int idx = NavMesh.GetNavMeshLayerFromName(name);
return 0x1 << idx;
} // Nav层名字-->层索引,0、1、2、3、4
public static int AgentLayerNameToIndex(string name)
{
return NavMesh.GetNavMeshLayerFromName(name);
} // 获取角色当前所在的层值,1、2、4、8、16
public static int GetAgentLayer(NavMeshAgent agent)
{
NavMeshHit hit;
// 不要使用agent.raduis为采样范围,因为当该值为0时,函数将返回0
bool reach = NavMesh.SamplePosition(agent.transform.position, out hit, 1f, -);
return hit.mask;
} public static Vector3 SampleNavMeshPosition(Vector3 logicPosition, out bool reachable)
{
NavMeshHit hit;
reachable = NavMesh.SamplePosition(logicPosition, out hit, 1f, -);
return reachable ? hit.position : logicPosition;
} // 开启导航层
public static void EnableNavMeshLayer(NavMeshAgent agent, string layerName)
{
if (agent == null)
return; int layerValue = NavMesh.GetNavMeshLayerFromName(layerName);
if (layerValue == -)
return; int mask = agent.walkableMask | 0x1 << layerValue;
WalkArbiter.SetWalkableMask(agent, mask);
} // 关闭导航层
public static void DisableNavMeshLayer(NavMeshAgent agent, string layerName)
{
if (agent == null)
return; int layerValue = NavMesh.GetNavMeshLayerFromName(layerName);
if (layerValue == -)
return; int mask = agent.walkableMask & ~(0x1 << layerValue); WalkArbiter.SetWalkableMask(agent, mask);
} // 检查某个层是否为开启
public static bool IsNavMeshLayerOpen(NavMeshAgent agent, string layerName)
{
int layerValue = NavMesh.GetNavMeshLayerFromName(layerName);
if (layerValue == -)
return true; int ret = agent.walkableMask & (0x1 << layerValue);
return ret > ? true : false;
}

NavMesh名字、层索引、层值之间的转换的更多相关文章

  1. 有两个地方,用到了javabean对象和属性字符串值之间的转换

    1.有两个地方,用到了javabean对象和属性字符串值之间的转换 2.一个是接入层spring mvc,将json字符串参数转换为javaBean.通过@RequestBody javaBean方式 ...

  2. 3,bool值之间的转换,和str的各个功能属性。

    bool值之间的转换 and 空字符串即为False   字符串内有内容即为True. a = 11 c = str(a) #int转换成str print(type(c)) a = ' b = in ...

  3. 《Python CookBook2》 第一章 文本 - 每次处理一个字符 && 字符和字符值之间的转换

    文本 - 总结: 什么是文本Python 中的string 类型是不可变类型.文本,一个字符的矩阵,每一个单独的文本快可以被缩进和组织起来. 基本的文本操作①解析数据并将数据放入程序内部的结构中:②将 ...

  4. Python - 字符和字符值之间的转换

    字符和字符值之间的转换 Python中, 字符和字符值, 直接的转换, 包含ASCII码和字母之间的转换,Unicode码和数字之间的转换; 也可以使用map, 进行批量转换, 输出为集合, 使用jo ...

  5. 深入剖析JavaScript中的对象与原始值之间的转换机制

    我们都知道原始值之间是可以互相转换的,但是如果对象转原始值呢? 所有的对象在布尔上下文(context)中均为 true .所以对于对象,不存在 to-boolean 转换, 只有字符串和数值转换. ...

  6. 关于Repository、IUnitOfWork 在领域层和应用服务层之间的代码分布与实现

    本来早就准备总结一下关于Repository.IUnitOfWork之间的联系以及在各层中的分布,直到看到田园里的蟋蟀发表的文章:<DDD 领域驱动设计-谈谈 Repository.IUnitO ...

  7. 获取layer.open弹出层的返回值

    正在开发的车联网项目用到了layer API.当我在开发“新建电子围栏”的时候需要弹出地图,用户在地图中画一个区域,最后将这个弹出层的数据返回给原页面.下面是我的实现过:程: 触发弹出层的代码: la ...

  8. LB层到Real Server之间访问请求的响应时间及HTTP状态码监控及报警设置

    为了监控到各业务的访问质量,基于LB层的Nginx日志,实现LB层到Real Server之间访问请求的响应时间(即upstream_response_time)及HTTP状态码(即upstream_ ...

  9. springboot 注册dao层 service 层

    可以使用三种注解来引入DAO层的接口到spring容器中.1.@Mapper,写在每一个DAO层接口上,如下: 2.@MapperScan和@ComponentScan两者之一.前者的意义是将指定包中 ...

随机推荐

  1. android: permission和uses-permission

    首先,先看一下permission定义的格式: <permission android:description="string resource" android:icon= ...

  2. Hermes实时检索分析平台

    一.序言 随着TDW的发展,公司在大数据离线分析方面已经具备了行业领先的能力.但是,很多应用场景往往要求在数秒内完成对几亿.几十亿甚至几百上千亿的数据分析,从而达到不影响用户体验的目的.如何能够及时有 ...

  3. Unity3D Shader入门指南(一)

    动机 自己使用Unity3D也有一段时间了,但是很多时候是流于表面,更多地是把这个引擎简单地用作脚本控制,而对更深入一些的层次几乎没有了解.虽然说Unity引擎设计的初衷就是创建简单的不需要开发者操心 ...

  4. Oracle Goldengate REPLICAT启动时报正在运行解决办法

    stop replicate时报ERROR: opening port for REPLICAT MYREP (TCP/IP error: Connection refused). start rep ...

  5. Android开发(三十二)——延时

    模拟延时 private class GetDataTask extends AsyncTask<Void, Void, String[]> { @Override protected S ...

  6. CSS层叠样式表的层叠是什么意思(转自知乎)

    转自知乎上的回答:http://www.zhihu.com/question/20077745 解答一: 层叠指的是样式的优先级,当产生冲突时以优先级高的为准.1. 开发者样式>读者样式> ...

  7. Three Sources of a Solid Object-Oriented Design

    pingback :http://java.sys-con.com/node/84633?page=0,1 Object-oriented design is like an alloy consis ...

  8. T 泛型转换

    T为左值 result = (T)Convert.ChangeType(o,typeof(T));

  9. 安装与配置 Elasticsearch

    环境:centos6.7 #查询已经安装的JDK rpm -qa | grep jdk #卸载 yum -y remove  java-1.8.0-openjdk-headless-1.8.0.91- ...

  10. NSObject的load和initialize方法(转)

    全文转载自:http://www.cocoachina.com/ios/20150104/10826.html 在Objective-C中,NSObject是根类,而NSObject.h的头文件中前两 ...