当AI蛇的方向为A向量,这是我们需要要求蛇往B向量这个方向移动,这时的做法就是
B-A=C;那么蛇的每帧的实际方向向量为Dir=x1*A+C*x2;然后A=Dir向量,其中x1和x2是权重,可以随便赋如果x1很小而x2很大的话 那么蛇想B向量靠近的时间就会很短 相反就会很长。这个权重还有根据具体分析,如果AI蛇检测到前面有一堵墙的话,这里检测没有采用射线检测因为射线检每帧检测会比较消耗性能。所以采用的方法是在蛇头前面添加2个碰撞器,判断是左边的碰撞器还是右边的碰撞器碰撞到障碍(其他的蛇和边界)来获得躲避的向量。接下来贴出具体的AI代码。
SetMoveDir设置蛇移动的方向,这里使用方法是 _joystackCc.DragAction = (v) => { _playerSnake.SetMoveDir(v); };给虚拟摇杆注册DragAction,就是遥感产生了偏移后同时设置蛇的移动方向。
GameOver方法作用是通知游戏结束。
接下来就是管理有戏整体的类GameLayer,这个类的作用管理UI管理器,声音管理器(这里我还没有写声音),及玩家蛇 AI蛇管理器,这个类就是最高层的管理器了。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/19740.html