避开障碍物(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;}}
}

测试:

  1. 创建一个Cube,一个Cube2作为障碍物,一个Cylinder作为目标。
  2. 给Cube身上加入LocomotionController脚本、SteeringForArrival和SteeringForEvadeObstacle脚本。
  3. Cube2标记设置为“obstacle”
  4. 把Cylinder拖给Cube身上的SteeringForArrival脚本。
  5. 运行

运行:

观察Cube的运动轨迹。

Unity3D游戏AI架构

实现AI角色的自主移动-避开障碍物Obstacle行为相关推荐

  1. 实现AI角色的自主移动——操控行为

    Unity3D人工智能框架模型 游戏UI的框架模型    尽管每种游戏需要的AI技术都有所不同,但绝大部分现代游戏中对UI的需求都可以分为三级: 运动层:导航和寻路是运动层AI的主要任务,它们决定了角 ...

  2. Unity人工智能编程精粹学习笔记 实现AI角色的自主移动——操控行为

    目录 操控行为 操控行为编程的主要基类 个体AI角色的操控行为 群体的操控行为 个体与群体的操控行为组合 几种操控行为的编程解析 操控行为的快速实现 操控行为编程的其他问题 总结 源码工程下载链接 操 ...

  3. 实现AI角色的自主移动-追逐Pursuit行为

    追逐(Pursuit)行为 追逐行为也叫拦截行为,与靠近算法很像,只不过如果模拟动物追逐猎物的时候,绝不是直接向猎物的当前位置奔跑,而是预测猎物的未来位置,然后向着未来位置的方向追去,这样才能在最短时 ...

  4. Unity人工智能编程精粹学习笔记 寻找最短路径并避开障碍物——A*寻路

    目录 实现A*寻路的3种工作方式 基于单元的导航图 可视点导航图 导航网格 A*算法是如何工作的 A*算法的流程图 用一个实例来完全理解A*寻路算法 A*算法实例核心代码及项目工程 A*寻路的适用性 ...

  5. Cinemachine(二)制作不会穿墙(会避开障碍物)的摄像头(Cinemachine Collider)

    前言 在许多的第三人称游戏中,我们的摄像机往往保持着一定的偏移,跟随着我们的角色.但是常常会出现的一种情况就是,当我们的角色走进室内或者靠近墙边或障碍物的时候,如果这个偏移保持不变的话,我们的摄像机就 ...

  6. 大型AI已有自主意识了?LeCun开喷Open AI首席科学家

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨新智元 编辑丨极市平台 导读 作为AI界的明星研究所,老是搞事 ...

  7. Unity人工智能编程精粹学习笔记 AI角色的复杂决策——行为树

    要让游戏里的AI角色能执行预设的逻辑,最直接的方法是依照行为逻辑直接编写代码,但是这种方法工作量大,也容易出错.我们也可以用有限状态机来实现行为逻辑,但是有限状态机难以模块化,编写代码麻烦且容易出错. ...

  8. LeCun的62页新作:未来十年的AI研究计划——自主机器智能

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入-> CV 微信技术交流群 丰色 发自 凹非寺 转载自:量子位(QbitAI) 这段时间,关于 ...

  9. Unity3D AI角色移动和自动跟随

    AI角色按照一定的移动逻辑进行移动时,AI逻辑处理角色需要移动的位置,还需要移动逻辑实时处理角色的当前速度和角度.官方的示例中角色的移动是通过设置速度之后,依靠动画的位移来实现的,所以代码中只需要设置 ...

最新文章

  1. 小程序客服消息推送自动回复_如何让小程序客服消息根据用户输入关键词自动回复图片?...
  2. 东汉末年,他们把「服务雪崩」玩到了极致
  3. Android图片剪裁库
  4. Java实现查询菜单返回树结构
  5. ACCESS在哪输入SQL语句
  6. Docker镜像仓库
  7. CF1415E New Game Plus(贪心)
  8. SpringMVC注解HelloWorld
  9. 【车联网】车联网产业发展报告(2019)
  10. sql怎么注销当前登录状态_4种方法教你获取Oracle数据库当前会话/进程的session id...
  11. 三大协议NetBEUI和 IPX/SPX TCP/IP
  12. win10开机无响应 无服务器,win10开机假死-状态栏和开始菜单无响应
  13. Ethernet/IP介绍
  14. 高精度定位赋能行业创新,Petal Maps Platform 创新地图平台能力
  15. SQL Server无法以local 登陆问题的解决方法provider: Named Pipes Provider, error: 40 - Could not open a connection
  16. 正则表达式与遇到的问题
  17. 《Braid》碎片式台词
  18. 大学物理复习笔记——光学
  19. 解决Ubuntu18.04搜狗拼音输入法选词面板出现乱码问题
  20. 【毕业设计day04】思路理清

热门文章

  1. 奇迹按键精灵挂机脚本_奇迹脚本代码导入按键精灵后怎么使用?
  2. JavaScript倒计时算法(计算剩余多少天)实现
  3. 不可或缺的ASP.NET内置对象
  4. 英语语法篇 - 英语的补语
  5. 基于RSA算法实现软件注册码原理初讨
  6. 影像传感器尺寸换算(英寸-毫米)
  7. 经验分享——本科非技术女
  8. 用Python机器人监听微信群聊, 我看谁这么大的胆子敢调侃老板和前台小姐姐!
  9. Hive面试题系列第三题-用户留存问题
  10. (大全)预后Cox 列线图Nomogram 校正曲线calibration curve 时间依赖ROC survivalROC C指数C-index 两ROC比较