unity AI Planner 人工智能简介

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

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

Actions 行为事件

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

      • unity AI Planner 人工智能简介_第1张图片
      • 创建出来的:unity AI Planner 人工智能简介_第2张图片
      • OperationalAction 就是你新建继承IOperationalAction的脚本 这里就是选择执行哪个,这个脚本帮助代理执行动作
      • Parameters -先决条件-执行行动的条件。就是例如吃血包要在不满血时候吃就加上条件,(hp,然后他满足这个条件AI才会允许可以执行这个行为,具体什么时候就是AI自己去衡量
      • Effect-对象因操作而引起的变化,数值或者创建对象之类的
      • Cost / Reward-采取行动的成本(负)或奖励(肯定)。类似机器学习负值就尽量避免正值就多点做
    • 代码: IOperationalAction 必须要继承这里示例是OttoAction : IOperationalAction 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继承了 放在角色下面,代理数据预制体也赋值这里

    • unity AI Planner 人工智能简介_第3张图片
  • 预制体,这里放置了可进行的行为和终止条件死亡unity AI Planner 人工智能简介_第4张图片

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

  • 右键创建unity AI Planner 人工智能简介_第5张图片
  • 这里就是自定义 属性的名称,例如物品的名称,血量 蓝量都是这里定义unity AI Planner 人工智能简介_第6张图片,物品建一个罗列有什么,属性也建一个罗列一排unity AI Planner 人工智能简介_第7张图片
  • 记得按保存他会动态序列化增改枚举类,代码就有这些枚举了

Termination 终止条件

  • 就是代理Agents 终止执行的条件,就是死亡或者别的终止条件
  • 右键创建unity AI Planner 人工智能简介_第8张图片

Traits 容器

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

使用

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

整体流程

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

unity AI Planner 人工智能简介_第14张图片

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

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

你可能感兴趣的:(Unity,AI,unity,人工智能,游戏引擎)