NavMesh名字、层索引、层值之间的转换
// 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名字、层索引、层值之间的转换的更多相关文章
- 有两个地方,用到了javabean对象和属性字符串值之间的转换
1.有两个地方,用到了javabean对象和属性字符串值之间的转换 2.一个是接入层spring mvc,将json字符串参数转换为javaBean.通过@RequestBody javaBean方式 ...
- 3,bool值之间的转换,和str的各个功能属性。
bool值之间的转换 and 空字符串即为False 字符串内有内容即为True. a = 11 c = str(a) #int转换成str print(type(c)) a = ' b = in ...
- 《Python CookBook2》 第一章 文本 - 每次处理一个字符 && 字符和字符值之间的转换
文本 - 总结: 什么是文本Python 中的string 类型是不可变类型.文本,一个字符的矩阵,每一个单独的文本快可以被缩进和组织起来. 基本的文本操作①解析数据并将数据放入程序内部的结构中:②将 ...
- Python - 字符和字符值之间的转换
字符和字符值之间的转换 Python中, 字符和字符值, 直接的转换, 包含ASCII码和字母之间的转换,Unicode码和数字之间的转换; 也可以使用map, 进行批量转换, 输出为集合, 使用jo ...
- 深入剖析JavaScript中的对象与原始值之间的转换机制
我们都知道原始值之间是可以互相转换的,但是如果对象转原始值呢? 所有的对象在布尔上下文(context)中均为 true .所以对于对象,不存在 to-boolean 转换, 只有字符串和数值转换. ...
- 关于Repository、IUnitOfWork 在领域层和应用服务层之间的代码分布与实现
本来早就准备总结一下关于Repository.IUnitOfWork之间的联系以及在各层中的分布,直到看到田园里的蟋蟀发表的文章:<DDD 领域驱动设计-谈谈 Repository.IUnitO ...
- 获取layer.open弹出层的返回值
正在开发的车联网项目用到了layer API.当我在开发“新建电子围栏”的时候需要弹出地图,用户在地图中画一个区域,最后将这个弹出层的数据返回给原页面.下面是我的实现过:程: 触发弹出层的代码: la ...
- LB层到Real Server之间访问请求的响应时间及HTTP状态码监控及报警设置
为了监控到各业务的访问质量,基于LB层的Nginx日志,实现LB层到Real Server之间访问请求的响应时间(即upstream_response_time)及HTTP状态码(即upstream_ ...
- springboot 注册dao层 service 层
可以使用三种注解来引入DAO层的接口到spring容器中.1.@Mapper,写在每一个DAO层接口上,如下: 2.@MapperScan和@ComponentScan两者之一.前者的意义是将指定包中 ...
随机推荐
- js命名规范
- Android ImageView圆形头像
转载自:http://m.oschina.net/blog/321024 Android ImageView圆形头像 图片完全解析 我们在做项目的时候会用到圆形的图片,比如用户头像,类似QQ.用户在用 ...
- 如何关闭Linux里边的selinux ?
原文地址: http://jingyan.baidu.com/article/6d704a131ba67828da51ca73.html 有很多的Linux使用者因为对selinux不熟悉,所以都会将 ...
- C#Winform程序如何发布并自动升级(图解)
C#Winform程序如何发布并自动升级(图解) 有不少朋友问到C#Winform程序怎么样配置升级,怎么样打包,怎么样发布的,在这里我解释一下打包和发布 关于打包的大家可以看我的文章C# w ...
- 了解Browserify
Browserify是一个Javascript的库,可以用来把多个Module打包到一个文件中,并且能很好地应对Modules之间的依赖关系.而Module是封装了属性和功能的单元,是一个Javasc ...
- MySQL 学习用employee数据库表参考使用
download place:https://launchpad.net/test-db/ ,choose this file from the right panel:employees_db-fu ...
- Uploadify v3.2.1 上传图片并预览
前端JSP: <script type="text/javascript"> $(function() { $("#upload_org_code" ...
- Scala 深入浅出实战经典 第76讲:模式匹配下的赋值语句
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...
- iOS中生成并导入基于Swift编程语言的Framework
从iOS 8.0开始就引入了framework打包方式以及Swift编程语言.我们可以主要利用Swift编程语言将自己的代码打包成framework.不过当前Xcode 7.x在自动导入framewo ...
- c++标准库
Technical Report 1不是正式的库只是一个草案,作为C++ 2003标准的附加库被大多数编译器厂商所支持,它是个过渡性质的库,其实现将会作为C++11标准的一部分.很多编译器对C++11 ...