实现AI角色的自主移动-避开障碍物Obstacle行为
避开障碍物(Obstacle)行为
避开障碍物行为是指操控AI角色避开路上的障碍物,例如动物奔跑时,避免与树、墙碰撞。当AI角色的行进路线上发现比较近的障碍时,产生一个排斥力,是AI角色远离这个障碍物。
C#脚本代码
using UnityEngine;namespace AI.Steering
{public class SteeringForEvadeObstacle : Steering{//字段//障碍物标记public string obstacleTag = "obstacle";//探头的位置public Transform probePos;//探头的长度public float probeLength = 15;//最小推力public float minPushForce = 30;//方法public override Vector3 GetForce(){//使用探头检测前方,如果有障碍物RaycastHit hit;//bool b1 = Physics.Raycast(probePos.position, probePos.forward,// out hit, probeLength);//bool b2 = false;//if (hit.collider != null)//{// b2 = hit.collider.tag == obstacleTag;//}if (Physics.Raycast(probePos.position, probePos.forward,out hit, probeLength) && hit.collider.tag == obstacleTag){//由障碍物向碰撞点 产生一个推力,这个推力就是操控力expectForce = hit.point - hit.transform.position;//操控力 如果很小 则将操控力放大if (expectForce.magnitude < minPushForce){expectForce = expectForce.normalized * minPushForce;}//返回操控力 return expectForce * weight;}//没有障碍物return Vector3.zero;}}
}
测试:
- 创建一个Cube,一个Cube2作为障碍物,一个Cylinder作为目标。
- 给Cube身上加入LocomotionController脚本、SteeringForArrival和SteeringForEvadeObstacle脚本。
- Cube2标记设置为“obstacle”
- 把Cylinder拖给Cube身上的SteeringForArrival脚本。
- 运行
运行:
观察Cube的运动轨迹。
Unity3D游戏AI架构
实现AI角色的自主移动-避开障碍物Obstacle行为相关推荐
- 实现AI角色的自主移动——操控行为
Unity3D人工智能框架模型 游戏UI的框架模型 尽管每种游戏需要的AI技术都有所不同,但绝大部分现代游戏中对UI的需求都可以分为三级: 运动层:导航和寻路是运动层AI的主要任务,它们决定了角 ...
- Unity人工智能编程精粹学习笔记 实现AI角色的自主移动——操控行为
目录 操控行为 操控行为编程的主要基类 个体AI角色的操控行为 群体的操控行为 个体与群体的操控行为组合 几种操控行为的编程解析 操控行为的快速实现 操控行为编程的其他问题 总结 源码工程下载链接 操 ...
- 实现AI角色的自主移动-追逐Pursuit行为
追逐(Pursuit)行为 追逐行为也叫拦截行为,与靠近算法很像,只不过如果模拟动物追逐猎物的时候,绝不是直接向猎物的当前位置奔跑,而是预测猎物的未来位置,然后向着未来位置的方向追去,这样才能在最短时 ...
- Unity人工智能编程精粹学习笔记 寻找最短路径并避开障碍物——A*寻路
目录 实现A*寻路的3种工作方式 基于单元的导航图 可视点导航图 导航网格 A*算法是如何工作的 A*算法的流程图 用一个实例来完全理解A*寻路算法 A*算法实例核心代码及项目工程 A*寻路的适用性 ...
- Cinemachine(二)制作不会穿墙(会避开障碍物)的摄像头(Cinemachine Collider)
前言 在许多的第三人称游戏中,我们的摄像机往往保持着一定的偏移,跟随着我们的角色.但是常常会出现的一种情况就是,当我们的角色走进室内或者靠近墙边或障碍物的时候,如果这个偏移保持不变的话,我们的摄像机就 ...
- 大型AI已有自主意识了?LeCun开喷Open AI首席科学家
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨新智元 编辑丨极市平台 导读 作为AI界的明星研究所,老是搞事 ...
- Unity人工智能编程精粹学习笔记 AI角色的复杂决策——行为树
要让游戏里的AI角色能执行预设的逻辑,最直接的方法是依照行为逻辑直接编写代码,但是这种方法工作量大,也容易出错.我们也可以用有限状态机来实现行为逻辑,但是有限状态机难以模块化,编写代码麻烦且容易出错. ...
- LeCun的62页新作:未来十年的AI研究计划——自主机器智能
点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入-> CV 微信技术交流群 丰色 发自 凹非寺 转载自:量子位(QbitAI) 这段时间,关于 ...
- Unity3D AI角色移动和自动跟随
AI角色按照一定的移动逻辑进行移动时,AI逻辑处理角色需要移动的位置,还需要移动逻辑实时处理角色的当前速度和角度.官方的示例中角色的移动是通过设置速度之后,依靠动画的位移来实现的,所以代码中只需要设置 ...
最新文章
- 小程序客服消息推送自动回复_如何让小程序客服消息根据用户输入关键词自动回复图片?...
- 东汉末年,他们把「服务雪崩」玩到了极致
- Android图片剪裁库
- Java实现查询菜单返回树结构
- ACCESS在哪输入SQL语句
- Docker镜像仓库
- CF1415E New Game Plus(贪心)
- SpringMVC注解HelloWorld
- 【车联网】车联网产业发展报告(2019)
- sql怎么注销当前登录状态_4种方法教你获取Oracle数据库当前会话/进程的session id...
- 三大协议NetBEUI和 IPX/SPX TCP/IP
- win10开机无响应 无服务器,win10开机假死-状态栏和开始菜单无响应
- Ethernet/IP介绍
- 高精度定位赋能行业创新,Petal Maps Platform 创新地图平台能力
- SQL Server无法以local 登陆问题的解决方法provider: Named Pipes Provider, error: 40 - Could not open a connection
- 正则表达式与遇到的问题
- 《Braid》碎片式台词
- 大学物理复习笔记——光学
- 解决Ubuntu18.04搜狗拼音输入法选词面板出现乱码问题
- 【毕业设计day04】思路理清
热门文章
- 奇迹按键精灵挂机脚本_奇迹脚本代码导入按键精灵后怎么使用?
- JavaScript倒计时算法(计算剩余多少天)实现
- 不可或缺的ASP.NET内置对象
- 英语语法篇 - 英语的补语
- 基于RSA算法实现软件注册码原理初讨
- 影像传感器尺寸换算(英寸-毫米)
- 经验分享——本科非技术女
- 用Python机器人监听微信群聊, 我看谁这么大的胆子敢调侃老板和前台小姐姐!
- Hive面试题系列第三题-用户留存问题
- (大全)预后Cox 列线图Nomogram 校正曲线calibration curve 时间依赖ROC survivalROC C指数C-index 两ROC比较