Unity人工智能学习—躲避规则障碍一
第一部分:效果预览先上效果图。这一部分将要讲的是智能躲避规则的障碍物。其实,这是最终现实效果,在算法中实际上使用到了
一个隐藏的碰撞检测盒子,这个盒子是从智能体延伸出的。如图所示:保持红色长方形区域不被碰撞就可以躲避障碍物了。检测盒的宽度等于智能体的包围半径
它的长度正比于智能体的当前速度,即它移动的越快,检测盒子就越长。如图所示为实际的效果图:
Vector2 AI_ObstacleAvoidance(){//检测盒子长度正比于智能体的速度m_dDboxLength = MinDetectBoxLength + (Plane.Speed/Plane.MaxSpeed) * MinDetectBoxLength;detectBox.rectTransform.localScale = new Vector3(1, m_dDboxLength / 50, 0);//Debug.Log(m_dDboxLength);TagNeighbors(m_dDboxLength);TagObstacles ClosestIntersectiongObstacle = null;Vector2 LocalPosOfClosestObstacle = new Vector2();//记录被转换的局部坐标。float DisttToClosestIP = float.MaxValue;foreach (TagObstacles obj in TagObstaclesList){//处理被标记的障碍物if (obj.isTag){Debug.Log(obj.gameObject.name + "Posx:" + obj.postion.x + "y:" + obj.postion.y);Vector2 LocalPos = PointToLocalSpace(ref obj.postion, Plane.vHeading, Plane.vSide, Plane.LocalPosition);//这个plane的一定要是局部坐标// Debug.Log("x:"+LocalPos.x+"y:"+LocalPos.y);//如果在导弹的局部坐标的正X轴即处理,否则就丢弃,因为在负X轴的都是在导弹的后面if (LocalPos.x >= 0){//如障碍物带局部坐标系的X轴的距离小于障碍物的半径+检测盒宽度的一半,那么可能相交float ExpandedRadius = obj.gameObject.GetComponent<SphereCollider>().radius + m_dDboxWidth / 2;if (Mathf.Abs(LocalPos.y) < ExpandedRadius){//现在做线/圆周相交测试。圆周的中心是(cX,cY)//相交点的公式是x=cX-Mathf.Sqrt(r^2-cY^2)此时y=0。我们只需要看x的最小正值,因为那是最近的相交点float cX = LocalPos.x;float cY = LocalPos.y;//我们只需要计算一次上面等式的开方float SqrtPart = Mathf.Sqrt(ExpandedRadius * ExpandedRadius - cY * cY);float ip = cX - SqrtPart;if (ip <= 0){ip = cX + SqrtPart;}// Debug.Log("ip:" + ip + "DisttToClosestIP:" + DisttToClosestIP);//测试是否这是目前为止最近的,如果是,记录这个障碍物和它的局部坐标。if (ip < DisttToClosestIP){DisttToClosestIP = ip;ClosestIntersectiongObstacle = obj;LocalPosOfClosestObstacle = LocalPos;}}}}}//如果找到一个相交的障碍物,计算一个远离它的操作力,分别计算在局部空间这个力的X和Y方向的分量Vector2 SteeringForce = new Vector2();if (ClosestIntersectiongObstacle != null){//导弹距离障碍物越近,在局部空间Y方向的制动力就会越强,计算这个影响因子float multiplier = 1.0f + (m_dDboxLength - LocalPosOfClosestObstacle.x) / m_dDboxLength;//计算这个力:障碍物的包围半径减去其在局部坐标空间的Y值SteeringForce.y = (ClosestIntersectiongObstacle.gameObject.GetComponent<SphereCollider>().radius - LocalPosOfClosestObstacle.y) * multiplier;//添加一个在局部空间X方向的制动力来作为刹车,它正比于导弹到障碍物的距离float BrakeingWeight = 0.2f;SteeringForce.x = (ClosestIntersectiongObstacle.gameObject.GetComponent<SphereCollider>().radius - LocalPosOfClosestObstacle.x) * BrakeingWeight;// Debug.Log("x:" +SteeringForce.x + "y:" + SteeringForce.y);}//最后将这个控制力的局部坐标转换到世界坐标空间return VectorToWorldSpace(ref SteeringForce, Plane.vHeading, Plane.vSide);}
Unity人工智能学习—躲避规则障碍一相关推荐
- Unity人工智能学习—确定性AI算法之追踪算法三
CSDN个人博客地址,凯尔八阿哥栏http://blog.csdn.net/zhangxiao13627093203,转载请注明出处 接下来就是要进行更为精准更智能的追踪.因此,在接下来的代码演示De ...
- Unity人工智能机器学习(环境安装篇)
Unity人工智能学习,需要搭建一个机器学习的环境(Python环境和tensorboard) 使用Anaconda便可快速搭建 以下是汽车自动驾驶绕开障碍物的机器学习演示: 机器学习前: 机器学习训 ...
- Unity Shader 学习笔记(33) 全局光照(GI)、反射探针、线性空间和伽马空间、高动态范围(HDR)
Unity Shader 学习笔记(33) 全局光照(GI).反射探针.线性空间和伽马空间.高动态范围(HDR) 参考书籍:<Unity Shader 入门精要> [<Real-Ti ...
- AI 人工智能学习路线
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 相关视频资料下载见:https://blog.csdn.net/qwxwaty/article/de ...
- 人工智能学习路线(转载)
人工智能都包括什么? 人工智能包括现在非常流行的一些网络词语:人工智能->机器学习->深度学习. 图片来自于网络. 怎样学习? 路径一:一步一个脚印,扎扎实实从基础学起,逐步提高学习难度 ...
- Python全栈+人工智能学习路线
2019最新Python全栈+人工智能学习路线升级版 全面涵盖前端.后端.爬虫.数据挖掘.人工智能等课程(课程大纲+视频教程+网盘资源下载)! https://www.cnblogs.com/coff ...
- python+人工智能学习线路
小白学Python最苦恼的是路线怎么走,怎样才不会走弯路,这里分享一份Python+人工智能的学习方案及目标.感兴趣的可以看看. 第一阶段 Python核心编程 学习内容技术要点 计算机组成原理认识操 ...
- 人工智能学习之机器人路径规划优化
人工智能学习之基于A*算法的机器人路径规划优化 前言 大三下学期,学习了人工智能,因为要备研,上课基本上没怎么听,故也就没怎么学,这是一门考查课,最后要完成布置的大作业,作为算分的依据,就选一个简单的 ...
- Python人工智能学习路线(万字长文)
前言 随着全球市场的饱和,以及模式创新的用尽,传统的互联网产业已经进入成熟阶段,不会再有突飞猛进的发展. (文末送读者福利) 接下来,是人工智能和大数据展露锋芒的时候了,它们在未来 10 年一定会快速 ...
最新文章
- R语言set.seed函数的意义及实战
- 实践1-qq邮箱主页
- Shiro集成Web时的Shiro JSP标签
- bash的配置文件定义
- 2021年宝鸡中学高考成绩查询,宝鸡各高中2020年高考喜报成绩一览
- Spring MVC 源码-初始化阶段
- Service Fabric下删除实例并注销应用
- [html] 浏览器内多个标签页之间的通信方式有哪些?
- 【视频点播最佳实践】使用OSS SDK上传视频到点播
- php 操件文件指定编码,(PHP帮助)如果文件中存在特定编号,请执行此操作
- python中的进程池:multiprocessing.Pool()
- 11-6-线程的概念
- BI在企业数字化转型中的价值
- easyBCD多系统引导软件
- 苹果mac Dock窗口预览工具:DockView
- 地图Web服务API接口——搜索POI(以高德地图为例)
- 计算机专业研究生核心能力培养(0)——计算机专业要不要读研?
- NAND flash 基础知识
- 单片机控制电路的多图纸原理图和层次式设计
- (五)carla中世界坐标系与相机坐标系、像素坐标系变换