元旦期间玩了缺氧,感觉十分的好玩。属于深度沙盒经营类游戏。既然好玩那就要知其所以然,今天抽空看了看源码,基本上列出所有能找到的工具或技术。算是一个记录,也开阔一下视野。如果你还有什么补充欢迎给我留言。
前阵子我在Github上给Unity团队提了一个issue关于使用代码获取
agentTypeID
,说来惭愧是我自己的没找到对应的代码。在我使用另外渠道获取此ID的时候 Unity团队已经默默给我回复了这个issues.先说说我的解决方式,由于代码设置 agentTypeID 的时候需要给一个Int类型变量,这个变量其实是对应了一个枚举,我在UnityEditor Inspector的Debug窗口中直接获取了对应AgentTypeID. 笑. 本文记录我获得答复的过程,换个角度想想其实也能发现另外的解决方案即使不知道也没关系
。
在网上看到一个平滑算法,很好用,经过测试它的效率很高,Chaikin 函数调用2-3次会获得一个相对较好的曲线。算法链接
原理是不断的裁切三角形让其分裂成2个三角,2个三角变成4个,以此类推,最终会越来越平滑从而接近一个圆。
今天群里有兄弟问: “我看到navmeshagent里面有个方法叫什么获取网格边缘点的,我打算首先判断目标点在不在网格上。在的话正常逻辑,不在的话判断当前agent的位置有没有到那个边缘点 “ 。我想这样应该能解决这个问题。
高级 NavMesh 组件说明文档
NavMesh Surface 脚本 ,在此之前 我看了网络上的一篇介绍 进击的新版NavMesh系统:看我飞檐走壁 效果非常好。我一边测试一边记录关于Surface的用法。
NavMesh Surcefa组件表示特定NavMeshAgent类型的可行走区域,并定义应该构建NavMesh的场景的一部分。
NavMesh Surface组件不在标准Unity安装中; 有关如何访问它的信息,请参阅高级NavMesh构建组件的文档。
要使用NavMesh Surface组件,导航到GameObject> AI> NavMesh Surface。 这将创建一个空的GameObject,并附带一个NavMesh Surface组件。 一个场景可以包含多个NavMesh表面。