位置: 编程技术 - 正文

Unity 初级AI躲避障碍物(unity alembic)

编辑:rootadmin
1.引言

推荐整理分享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向量叉乘遵守左手坐标系,为了让行为更自然需要用点乘纠正方向。

Unity 初级AI躲避障碍物(unity alembic)

当物体沿着障碍物移动时,则不做任何事情,直到脱离障碍物,开始施加向目标点力。若物体没有沿着墙壁前进,并且通向目标一定范围内没有障碍物。则直接更改速度。

若发现目标点畅通无阻则直接更改速度向其前进。

5.注意事项:

把此段代码引入到原书项目中,可test效果。有一个问题需要注意一下,由于移动物体时存在体积的,所以单纯以物体position进行射线检测会在拐角处发生碰撞,为了简化问题,开启移动物体isTrigger选项。

引入简单状态机:

下面是优化可读性的代码,类&#;switch-case状态机,由于运动状态的转换图比较复杂,这里引入一个中央的状态管理器。

游戏编程设计模式-命令模式Unity示例 在游戏编程里面,有一个经常会被用到的设计模式-命令模式。我对设计模式的理解是1、为解决问题而生。2、有大致流程,但是没有固定式3、为了沟通

判断攻击范围 //1、只攻击正前方的单位,向前发射一条射线,攻击碰到的单位RaycastHithit;//range射线的长度,即攻击范围,maskTarget敌方单位的mask,只攻击敌方单位if(Phy

unity商店demo学习:跑酷游戏 本文素材和代码全部来自unityassetstore里面的3DInfiniteRunnerToolkit项目步骤场景一:TitleScene1搭建开始界面场景这个场景是开启游戏的第一个界面,用于选择

本文链接地址:https://www.jiuchutong.com/biancheng/369387.html 转载请保留说明!

上一篇:围绕摄像机旋转(围绕摄像机旋转怎么设置)

下一篇:游戏编程设计模式-命令模式Unity示例(游戏编程设计模拟软件)

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络