这是一篇残缺不全的记录……
Unity寻路所有的资料大概都是NavMesh吧。本来这一块跟我没啥关系,后来队友告诉我:NavMesh没法模拟坦克的转向。
我也不知道是怎样勇气打算试一下机器学习?反正最后凉了想看解决方法的散了吧……
配环境啥的都不说了。
agent的移动方式是转向和向前向后运动,就是基本的坦克的运动。
提醒一个问题就是如果是用
Input.GetAxis("Vertical")
来判断方向的话,这个值在brain设置为player的时候是对的但是在训练的时候是0……
一开始设计的是
- 奖励
- +2 看到目标(正前方的射线检测到目标并且在一定距离内)
- -0.01 每步
- +0.02 如果这一次比上一次更接近目标点
- -1 坦克掉下去
- 重置条件
- 坦克的 y < 正常值(掉了下去)
- 目标的 y < 正常值(也是掉下去了)
- 坦克长期不移动(可能卡在了哪里)
- 目标在坦克视线范围内
我还加过一个重置条件是当超过一定时间还没有找到目标的时候,重置目标的位置。无法评价这个决策的好坏……就不在这里加了。
这样训练的结果是,坦克开始疯狂撞墙——可能是由于它找到目标的