博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NavMesh名字、层索引、层值之间的转换
阅读量:6278 次
发布时间:2019-06-22

本文共 1918 字,大约阅读时间需要 6 分钟。

// 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, -1);        return hit.mask;    }    public static Vector3 SampleNavMeshPosition(Vector3 logicPosition, out bool reachable)    {        NavMeshHit hit;        reachable = NavMesh.SamplePosition(logicPosition, out hit, 1f, -1);        return reachable ? hit.position : logicPosition;    }    // 开启导航层    public static void EnableNavMeshLayer(NavMeshAgent agent, string layerName)    {        if (agent == null)            return;        int layerValue = NavMesh.GetNavMeshLayerFromName(layerName);        if (layerValue == -1)            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 == -1)            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 == -1)            return true;        int ret = agent.walkableMask & (0x1 << layerValue);        return ret > 0 ? true : false;    }

 

转载地址:http://ysyva.baihongyu.com/

你可能感兴趣的文章
http缓存知识
查看>>
Go 时间交并集小工具
查看>>
iOS 多线程总结
查看>>
webpack是如何实现前端模块化的
查看>>
TCP的三次握手四次挥手
查看>>
关于redis的几件小事(六)redis的持久化
查看>>
package.json
查看>>
webpack4+babel7+eslint+editorconfig+react-hot-loader 搭建react开发环境
查看>>
Maven 插件
查看>>
初探Angular6.x---进入用户编辑模块
查看>>
计算机基础知识复习
查看>>
【前端词典】实现 Canvas 下雪背景引发的性能思考
查看>>
大佬是怎么思考设计MySQL优化方案的?
查看>>
<三体> 给岁月以文明, 给时光以生命
查看>>
Android开发 - 掌握ConstraintLayout(九)分组(Group)
查看>>
springboot+logback日志异步数据库
查看>>
Typescript教程之函数
查看>>
Android 高效安全加载图片
查看>>
vue中数组变动不被监测问题
查看>>
3.31
查看>>