位置: 编程技术 - 正文
推荐整理分享Unity 初级AI躲避障碍物(unity alembic),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:unity iap,unity游戏ai,unity at,unity iap,unity adjust,unity防止人物穿墙,unity防止人物穿墙,unity躲避障碍物游戏,内容如对您有帮助,希望把文章链接给更多的朋友!
阅读《Unity Game AI programming 》第6章后,感觉躲避障碍物算法不是很给力。为了研究和学习Unity,自己改良躲避障碍物的算法。当然,代码没有优化,不过没关系,抛砖引玉,记录思想,学习交流。
2.与原书算法相比变化:1.启用物理引擎,使用速度和力解决问题。而不是使用的角度和位置
2.加入沿着障碍物行走,即使障碍物宽度很大或物体向障碍物前进的速度过快,也不会发生穿墙而过现象。
3.为配合沿着障碍物行走,并且显得更自然,引入三个速度与障碍物的交互分区。
3.分享一下示意源码:这个算法依旧存在缺陷,最大问题是运算量较大,并且细节不够丰富,导致物体移动行为不自然。4.算法详细描述:当逐渐近障碍物时,首先进入排斥区,对移动物施加障碍物平面法线方向的斥力。再次近改为施加平行于障碍物平面的引导力。若再次近则将移动物体的速度直接更改为平行于障碍物平面的速度。平行于障碍物平面的速度是用向量叉乘以及点乘求得的,Unity向量叉乘遵守左手坐标系,为了让行为更自然需要用点乘纠正方向。
当物体沿着障碍物移动时,则不做任何事情,直到脱离障碍物,开始施加向目标点力。若物体没有沿着墙壁前进,并且通向目标一定范围内没有障碍物。则直接更改速度。
若发现目标点畅通无阻则直接更改速度向其前进。
5.注意事项:把此段代码引入到原书项目中,可test效果。有一个问题需要注意一下,由于移动物体时存在体积的,所以单纯以物体position进行射线检测会在拐角处发生碰撞,为了简化问题,开启移动物体isTrigger选项。
引入简单状态机:下面是优化可读性的代码,类switch-case状态机,由于运动状态的转换图比较复杂,这里引入一个中央的状态管理器。
游戏编程设计模式-命令模式Unity示例 在游戏编程里面,有一个经常会被用到的设计模式-命令模式。我对设计模式的理解是1、为解决问题而生。2、有大致流程,但是没有固定式3、为了沟通
判断攻击范围 //1、只攻击正前方的单位,向前发射一条射线,攻击碰到的单位RaycastHithit;//range射线的长度,即攻击范围,maskTarget敌方单位的mask,只攻击敌方单位if(Phy
unity商店demo学习:跑酷游戏 本文素材和代码全部来自unityassetstore里面的3DInfiniteRunnerToolkit项目步骤场景一:TitleScene1搭建开始界面场景这个场景是开启游戏的第一个界面,用于选择
标签: unity alembic
本文链接地址:https://www.jiuchutong.com/biancheng/369387.html 转载请保留说明!友情链接: 武汉网站建设