unity AI Planner 人工智能简介

Posted 凉_开果

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity AI Planner 人工智能简介相关的知识,希望对你有一定的参考价值。

刚好看了就大概记录一下,不过这个插件已经停更了,下面以示例工程介绍
这个插件大概就是输入一些可操作行为和行为条件剩下的让AI自己独立思考

AI.Planner大概分为几个功能块

Actions 行为事件

  • 一些行为的事件,例如移动,吃东西等
  • 创建
    • 需要创建一个Actions 的预制体

      • 创建出来的:
      • OperationalAction 就是你新建继承IOperationalAction的脚本 这里就是选择执行哪个,这个脚本帮助代理执行动作
      • Parameters -先决条件-执行行动的条件。就是例如吃血包要在不满血时候吃就加上条件,(hp<maxhp),然后他满足这个条件AI才会允许可以执行这个行为,具体什么时候就是AI自己去衡量
      • Effect-对象因操作而引起的变化,数值或者创建对象之类的
      • Cost / Reward-采取行动的成本(负)或奖励(肯定)。类似机器学习负值就尽量避免正值就多点做
    • 代码: IOperationalAction 必须要继承这里示例是OttoAction : IOperationalAction<Otto, StateData, ActionKey> Otto是代理,StateData当前状态数据,ActionKey是你Parameters 设定的东西,这里主要几个函数

    • BeginExecution(StateData state, ActionKey action, Otto actor) IOperationalAction 接口的

      • 就是状态进来的事件
    • ContinueExecution(StateData state, ActionKey action, Otto actor) IOperationalAction 接口的

      • 状态持续中一直触发的
    • EndExecution(StateData state, ActionKey action, Otto actor) IOperationalAction 接口的

      • 状态离开
    • UpdateNeeds(StateData state, Otto actor) 不是接口的

      • 他这里主要是所有状态经过他 然后这里面有个死亡终止条件,她的终止条件就是写在这里的

Agents 代理

  • BaseAgent类,它处理规划系统和控制器。此外,该类拥有初始域数据的序列化字段,用户可以在编辑器的检查器窗口中设置这些字段。BaseAgent类继承MonoBehaviour,默认情况下,更新每个框架上的控制器。

  • 这里示例就是Otto继承了 放在角色下面,代理数据预制体也赋值这里

  • 预制体,这里放置了可进行的行为和终止条件死亡

Enums 自定义枚举类型 例如血量,物品名称等

  • 右键创建
  • 这里就是自定义 属性的名称,例如物品的名称,血量 蓝量都是这里定义,物品建一个罗列有什么,属性也建一个罗列一排
  • 记得按保存他会动态序列化增改枚举类,代码就有这些枚举了

Termination 终止条件

  • 就是代理Agents 终止执行的条件,就是死亡或者别的终止条件
  • 右键创建

Traits 容器

  • 就是储存一些行为所需要的一些数值属性,例如寻路要去睡觉:移动谁这里就会定义Agent 角色,移动目标点 Bed睡床,到达时间这里就需要定义一个Time时间
  • 右键创建
  • 示例这边是有 Agent 角色,Bed 睡床,Dispenser 物品台,Duration持续状态多少时间,Inventory背包属性当然具体背包实现代码还是要写但是框架已经带了一个基础的背包功能就是叫Inventory,Need 这里是一个初始属性他有每秒增加多少和初始值多少,就是用来定义体力 饥饿和疲劳的,Time就是完成时间啦,Workstation 工作台

使用

  • 大概建立以上五个模块的东西
  • 角色底下建立一个空物体拖脚本,然后赋值代理数据给脚本
  • 角色身上要挂的类DomainObjectProvider 示例有个寻路主要是挂的MotionController
  • 上面主要是放角色含有的一些属性例如otto上的角色和角色的位置属性,还有背包苹果和背包饮料,和三个属性值 ,这些是必须要的
  • 接着就是放置一些行为的地点了每个都会标明是什么,地点在哪

整体流程

Agents代理整合几个模块
交由继承BaseAgent的去思考执行哪个状态行为
执行代码继承自IOperationalAction去实现具体逻辑
状态结束
终止条件

  • 都只是丢进Agents里面让他自行决定行动,但是具体实现代码还是要写,例如使用物品血量减少50点,在使用该物品效果的代码上要写上减少50,在预制体里面写上减少50是告诉Agents去思考这个操作是这样,不会有具体效果,具体效果要用代
    码去实现 MD坑的一批
    附上示例工程 https://github.com/Unity-Technologies/otto

好了 以上就是大概简介= =有50个赞我就更下篇

以上是关于unity AI Planner 人工智能简介的主要内容,如果未能解决你的问题,请参考以下文章

总结游戏AI人工智能

[Unity 3D] 六一儿童节,人工智能让小朋友的画成真,这届小朋友人均达芬奇毕加索(Unity | AI | 绘图 | 爬虫 | 猫妖)

AI:Python与人工智能相关的库/框架(机器学习&深度学习&数据科学/计算机视觉/自然语言处理)的简介案例应用之详细攻略

Unity Rain Ai 插件基本使用

人工智能AI代码:AIXCodeCompletionHelper一个集成了 Open AI 人工智能写代码的 Jetbrains IDE 插件(支持 Golang,IDEA等)

cubeIDE开发, stm32人工智能开发应用实践(Cube.AI).篇一