AC.TiePanForAntsMove

AgentComponent_VLabTiePanForAntsMove

版本记录:

版本 更新内容
v0.8.0 给元器件添加环境标识,蚂蚁通过射线检测实时识别所在区域及移动方向;蚂蚁添加动画状态管理
v0.8.1 场景识别为导航图,支持无障碍移动寻径;实验环境旋转及缩放适配;蚂蚁添加通讯间隔
v0.8.2 蚂蚁运动逻辑重构,支持随机运动及定点移动;导航图可以通过障碍块进行更新,并适配元器件装拆操作-喷洒香水、拆掉桥、装上桥
v0.8.4 对蚂蚁运动转向做平滑处理;增加蚂蚁转向频率;蚂蚁与食物的层级解耦;蚁群同一时间只能发现一个食物
v0.8.5 对信息素中存储的食物信息进行位移适配;蚂蚁搬运食物时均匀分布在食物周围;搬回巢穴的食物从左向右摆放
v0.9.6 食物搬运点优先级调整;蚁群运动过程中实时避障;蚁群运动过程中不互相穿透;取消对刚体组件的依赖
v1.0.0 修复蚂蚁避障运动时的抖动问题;蚂蚁避障运动时不会被撞出可移动区域;蚂蚁只会在桥上释放信息素
v1.0.2 修复关闭Scene窗口时,避障表现不正确的问题;蚂蚁运动时更加乱序;蚂蚁只有在发现食物后返回巢穴的途中才会和其他蚂蚁交流
v1.1.0 蚂蚁回巢求助途中会主动通知沿途所有蚂蚁;蚂蚁通讯前慢速靠近对方,通讯过程中触角对触角;蚂蚁搬运食物时不会穿透另一块食物
v1.2.0 食物添加气味范围,蚂蚁走到食物岛附近时必定能发现食物;蚂蚁添加记忆功能,去过没有食物的岛后就不会再去;解决每次觅食大概率会有蚂蚁落单的问题
v1.2.1 增加环境标识种类;蚂蚁可以通过巢穴共享环境探索信息;蚂蚁到达空岛后,在岛上搜寻一段时间才返回;首只发现食物的蚂蚁,在触碰食物之后才回去通讯;修复蚂蚁强制前往食物点的状态适配问题
v1.2.2 蚂蚁搬运食物时,若右桥已被拆下,则不去搬运;每次安装/拆下桥梁时,蚂蚁的环境记忆都会被重置;修复蚂蚁搬运食物时的层级问题;首只闻到食物气味的蚂蚁,要走到食物面前才返回

联调记录:

版本 更新内容
v0.1.0 提供基础AC接口;根据正式实验环境进行导航图数据更新及障碍块数据更新;A星寻路dll管理
v0.1.9 核心逻辑代码重构,蚂蚁、木桥、石头、铁盘等改为同一层级
v0.2.0 接口重构,以铁盘为主体,提供数据类、操作类、状态类三种21个接口
v0.2.1 不规范操作适配-蚂蚁搬运食物时没有右桥的表现;每次拆除/安装桥,都会重置蚂蚁记录的无食物环境信息;蚂蚁实验开始时可以设置等待间隔,以及开启/禁止元器件交互的回调
v0.2.2 修复蚂蚁搬运食物时的层级问题;修复蚂蚁寻路组件初始化失败的问题;修复正式食物的Collider层级问题
v0.2.3 元器件结构适配:食物脚本挂在馒头块子节点下;蚂蚁开放动画路径参数;调整四个导航图障碍块的参数
v0.2.4 修复蚂蚁聚集在不同食物旁的问题;修复蚂蚁放下食物后,食物瞬移回原处的问题;修复交换信息素位置错误的问题;开放蚂蚁通讯时长的接口参数
v0.2.5 修复蚂蚁防落单参数调整;修复拼接、拆下、再拼接蚁巢后,初始化失效的问题;开放蚂蚁速度的接口参数;接口性能优化,使用数组更新障碍块
v0.2.6 拖出多个铁盘时不报错;铁盘销毁处理;元器件判空处理
v0.2.7 还原适配-lab文件没有按照正确顺序进行还原;元器件删除操作优化
v0.2.8 错误操作适配:蚂蚁开始运动后再拼上左桥;蚂蚁运动时未随机折返的问题;修复dll引用问题
v0.2.9 修复蚂蚁搬食物回到巢穴后仍旧播放动画的问题;扩大蚂蚁释放信息素的频率;修复蚂蚁无法检测到右桥的问题

表现说明:

经过与策划多次沟通修改,蚂蚁表现与策划案有不少差别,提测时应以以下原则为基准:
1、必须按顺序搭建实验环境,且实验开始后不能拖动实验环境(整体或部分);
2、蚁群首次开始移动的瞬间视为实验开始,表现是蚂蚁陆续开始移动;
3、蚂蚁运动过程中,不会互相穿透;
4、蚂蚁寻觅食物的过程中有概率折返(有表现即可);
5、蚂蚁距离食物有一定距离时便可发现食物,无需触碰(食物会散发气味);
6、首只发现食物的蚂蚁会返回巢穴传递信息,沿途经过的蚂蚁会和它进行交流(摆动触角),一次最多只和一只蚂蚁进行交流,交流时头对头静止,播放摆动触角动画;
7、蚂蚁到达空岛后,会先搜寻一会儿,然后返回,返回途中不会折返,且之后不会再去空岛;
8、只要环境做出改变(拆东西、装东西等),蚂蚁都会重置环境记忆,即会再次取空岛探寻;
9、蚂蚁搬运食物回巢后,会暂停一会儿,用户要在这段时间进行换桥、喷香水等操作;
10、换桥之后,蚂蚁会全部走向空岛,搜寻无果后返回巢穴,返回规则同第7条;
11、喷香水之后,蚂蚁会在右桥来回徘徊,但永远不会到达食物岛,也不会触发交流动画等;
12、若用户一只没有换桥等操作,蚂蚁会一只前往食物岛,直到把岛上的食物搬空;
13、若用户的交换等操作没有到位,导致环境缺失,蚂蚁会在缺失环境上继续运动;
14、喷洒香水后的湿润效果依赖暂未开发的湿润组件,本次未接入;
15、实验开始后不能单个删除元器件,只能直接删除铁盘,铁盘上的元器件会一起被删除;
16、当已经有8只或以上蚂蚁聚集在食物旁时,首只发现食物的蚂蚁不再回去通讯,直接前往食物点。

已知问题:

同时拖出两个或以上铁盘搭建环境,会导致导航图信息紊乱,蚂蚁运动范围错误,此问题处理优先级较低。

接口说明:

void Init(string mapPath, LuaTable rerfumeLeftPointsTable, LuaTable rerfumeMiddleLeftPointsTable, LuaTable rerfumeRightPointsTable, LuaTable rerfumeMiddleRightPointsTable)

简要说明:

  • 初始化铁盘及其对应的A星导航图、四个障碍块

参数:

参数名 类型 说明
mapPath string A星导航网格的路径,参考值为”TextAsset/AntEnvGraphData”
rerfumeLeftPointsTable LuaTable 整个左桥对应的障碍块顶点列表
rerfumeMiddleLeftPointsTable LuaTable 局部左桥对应的障碍块顶点列表
rerfumeRightPointsTable LuaTable 整个右桥对应的障碍块顶点列表
rerfumeMiddleRightPointsTable LuaTable 局部右桥对应的障碍块顶点列表

返回值说明

void

void InstallAntNest(int entityID, string foodPointsRootPath)

简要说明:

  • 装上蚁巢时调用

参数:

参数名 类型 说明
entityID int 充当蚁巢的那块石头的entityID
foodPointsRootPath string 蚁巢下三个食物摆放点的根节点路径

返回值说明

void

void RemoveAntNest()

简要说明:

  • 拆下蚁巢时调用

参数:

返回值说明

void

InstallEmptyIslet(int entityID)

简要说明:

  • 装上空岛时调用

参数:

参数名 类型 说明
entityID int 空岛对应的entityID

返回值说明

void

RemoveEmptyIslet()

简要说明:

  • 拆下空岛时调用

参数:

返回值说明

void

InstallFoodIslet(int entityID)

简要说明:

  • 装上食物岛时调用

参数:

参数名 类型 说明
entityID int 食物岛对应的entityID

返回值说明

void

RemoveFoodIslet()

简要说明:

  • 拆下食物岛时调用

参数:

返回值说明

void

InstallBoardLeft(int entityID)

简要说明:

  • 装上左桥时调用

参数:

参数名 类型 说明
entityID int 左桥对应的entityID

返回值说明

void

RemoveBoardLeft()

简要说明:

  • 拆下左桥时调用

参数:

返回值说明

void

InstallBoardRight(int entityID)

简要说明:

  • 装上右桥时调用

参数:

参数名 类型 说明
entityID int 右桥对应的entityID

返回值说明

void

RemoveBoardRight()

简要说明:

  • 拆下右桥时调用

参数:

返回值说明

void

InstallAnts(LuaTable entityIDTable, string similarDetectorPath, string pheromoneGlandPath, string animatorPath, float rvoRadius = 0.02f, float rvoHeight = 0.005f, float rvoCenter = 0.0f, float communicateTime = 2.0f, float speed = 0.05f)

简要说明:

  • 倾倒全部蚂蚁后调用,给所有蚂蚁一起添加运动组件

参数:

参数名 类型 说明
entityIDTable LuaTable 所有蚂蚁对应的entityID列表
similarDetectorPath string 同类探测器路径
pheromoneGlandPath string 信息素生成器路径
animatorPath string 动画节点路径
rvoRadius float 同类避障器半径
rvoHeight float 同类避障器高度
rvoCenter float 同类避障器中心
communicateTime float 蚂蚁播放通讯动画的时长
speed float 蚂蚁的移动速度

返回值说明

void

RemoveAnts()

简要说明:

  • 清除所有蚂蚁

参数:

返回值说明

void

InstallOneFood(int entityID, string carryPointsRootPath, LuaFunction foodAction)

简要说明:

  • 添加一个食物

参数:

参数名 类型 说明
entityID int 元器件的实例ID
carryPointsRootPath string 食物搬运点的根节点路径(相对于第二个参数)
foodAction LuaFunction 搬运食物时,对食物的拼接适配

返回值说明

void

RemoveOneFood(int entityID)

简要说明:

  • 拆下一个食物

参数:

参数名 类型 说明
entityID int 拆下的元器件所对应的entityID

返回值说明

void

StartTest(float intervalTime, LuaFunction banAllElm, LuaFunction actAllElm)

简要说明:

  • 开始实验

参数:

参数名 类型 说明
intervalTime float 蚂蚁每次搬运食物回巢后,等待的时间
banAllElm LuaFunction 禁止元器件交互的回调
actAllElm LuaFunction 开启元器件交互的回调

返回值说明

void

OnExchangeBridges()

简要说明:

  • 交换桥梁后的表现

参数:

返回值说明

void

OnSprayPerfume()

简要说明:

  • 喷洒香水后的表现

参数:

返回值说明

void

GetStartState()

简要说明:

  • 获得实验进度-实验是否开始

参数:

返回值说明

类型 说明
bool 是否认为实验开始(蚂蚁开始运动)

GetExChangeState()

简要说明:

  • 获得实验进度-是否交换过桥梁(检测左桥上是否有信息素,若有,则返回true)

参数:

返回值说明

类型 说明
bool 是否交换过桥梁

IsAllAntsStatic()

简要说明:

  • 获得实验状态-蚂蚁是否全部静止(蚂蚁全部静止时才能进行换桥或喷香水操作),实验开始前也会返回true

参数:

返回值说明

类型 说明
bool 蚂蚁是否全部静止