[Unity3D]赛车游戏开发 - 计算机对手AI设计方案

2022年05月14日 阅读数:8
这篇文章主要向大家介绍[Unity3D]赛车游戏开发 - 计算机对手AI设计方案,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

 本身先激动下个人计算机对手终于有点智商了,本身会跑了。而后接下来写教程-.-函数

[Unity3D]赛车游戏开发 - 计算机对手AI设计方案 - 六道小U - =六道异次元之Ω空间=
 

首先申明,这个车的运动并非简单的轨迹运动,他的AI是直接加在玩家控制引擎上的,我要作到的就是单一通用脚本,而且电脑没有做弊(想起星际电脑的AI就晕,电脑一开始就有给了本身不少钱,只不过在装他没钱而已)。测试

[Unity3D]赛车游戏开发 - 计算机对手AI设计方案 - 六道小U - =六道异次元之Ω空间=
 

这是我写的汽车的通用脚本的public属性段,AI那项不钩就是玩家控制的,勾选了就是电脑控制。(顺便炫下个人汽车引擎,那但是按真实汽车引擎转速和齿轮箱比例转换后做用到轮子上的。)嘿嘿,老外公开的代码都没有这些吧,个人齿轮箱是能够设置的,便于之后作改装车游戏用。spa

回归原题,写AI:设计

 

1.先给地图加上路径点(WayPoints)日志

电脑不是你,就算不是电脑,她也不必定知道你想让他往哪里开,开的赛道怎么样,这就须要一些路径提示。想起来之前玩三角洲的那个小地图,绿色的路径线指着目标方向,到了一个目标后继续朝下一个目标指去。OK,就这么作。orm

[Unity3D]赛车游戏开发 - 计算机对手AI设计方案 - 六道小U - =六道异次元之Ω空间=
 

首先得想到的是路径是要有顺序的,因此每一个路径点都必需要有个index属性来标识他在整个路径里的前后关系。(交代清楚下,有些人可能看到w这个字觉得我是哪里下的路径组件,能够跟你说,目前没有好用的路径组件,再说了路径点只是个坐标而已(能够建立Empty Object作,由于他就只有坐标信息),不必这个也copy人家吧,这个w图标是官方的FPS教程里拿出来用的,本身懒得画)。这里W图标和绿线是经过Gizmos,就是开发环境标记,不懂得能够参看我另一篇日志,这里仅仅是为了开发时候本身看得舒服点而已,编译完运行是不会有的。其实路径点只须要记录2个信息:坐标和索引(index),因此路径的脚本(类)里也必须有这两样。而后要有一个函数把地图上全部路径点整合起来,重点就是完成下面这个功能blog

var objects : Object[] = FindObjectsOfType(WayPoints);教程

以后再把当前脚本所在的路径点索引先后两个链接起来,这里用到一个Physics.Linecast()判断,连接时候测试下两个路径点连线中间有碰到其余物体,没有就画绿线,有就画红线(这个但是作AI寻径很重要的函数,判断AI能不能走过去或者判断电脑能不能看到某样东西的时候很是好用)。而后路径点就设置好了。索引

 

有关于Gizmos部分,参看我另一篇日志,这里不浪费文字了。游戏

 

2.计算机AI获取下一个目标路径点

这部很简单,在汽车引擎脚本里专门加个AI函数来处理,拿个变量记录下路径索引,到达一个后自动指向下一个就行了(到达最后一个index再回到0)。注意的是这里最好是个范围值,就是判断下车离这个点distance小于某个数值就算踩到这个点了,由于汽车可能拐弯没来得及从点旁边开过去了。

 

3.把控制权交给AI

咱们直接在键盘控制那里设个判断,若是AI=true,那就不用等待用户的键盘输入了,直接交给AI函数处理,既然已经知道下一个点应该往哪里走了,获取下下个点坐标,转换为车的本地坐标系,而后判断他的x轴位置,若是大于0就说明点偏汽车右手边,那就须要向右转弯,反之亦然。我写到这里时候也卡了一下下,原本觉得几何里有什么运算能够知道点和向量的位置关系,后来发现没办法知道,那最简单就是把点转换为汽车本地坐标系(由于本地坐标系最好判断,车的forward方向就是z轴,right方向就是x轴,up方向就是y轴)。这里的拐弯固然也要设个范围值,否则的话车一拐就过头了,你就会发现AI拼命在摇头了。而后就是让车控制你的键盘输入前进咯。

由于是AI替代了键盘控制而已,至于车怎么开,齿轮箱怎么变换档,刹车怎么处理这个都是汽车引擎封装好的,AI不须要知道,也没有必要知道,他们只要知道加速要按向前键,拐弯要按左右键就能够了。

 

提醒下物体在世界坐标系的坐标转换为本个物体的本地坐标系函数:

var nextPointofLocal = transform.InverseTransformPoint(nextPointPosition);

 

4.更聪明的AI

受别人提醒,见到别人的车要懂得躲避的,甚至之后要让电脑懂得漂移。

躲避方法很简单,同样能够用判断车到路径点中间有没有其余障碍物(其余车辆或者物体),有的话往左或往右转弯就能够了。或者还有其余想法,各位看官本身发挥了。