Skip to main content
ARShow
ARShow
 首页 » 资源教程

漫步者,Ethan——给Ethan增加AI(人工智能)和NavMesh(一)

2017年02月07日 20:29:1915740蛮牛网

 漫步者,Ethan——给Ethan增加AI(人工智能)和NavMesh(一) 资源教程

大部分VR是从游戏出发的。所以,我们也从这里开始。我们将给我们的主角Ethan赋予生命,好吧,也许不是生命,因为他会变成僵尸。

如果你有健盘或是游戏手柄,你可以让他在场景中跑一跑。实际上,你用Google Cardboard来浏览场景时,如果你没有手柄是非常不现实的(不是标准的蓝牙游戏手柄)。说实话,用Ocuus Rift,要求一个健盘或是游戏手柄是非常不人性化的,因为你根本看不到你的手。也许,有其他的方法可能让他移动,当你戴上VR装备的时候,直接使用你的目光。

在我们尝试之前,我们先将Ethan转变为一个僵尸,让他漫无目的地行走。我们给他写一个AI脚本,给他一个随机的目标位置。

智能型Ethan

首先,我们要替换ThirdPersonController这个Unity的默认的角色AI预设,用以下几步使用AIThirdPersonController。Unity中使用人工智能,就是脚本驱动,按以下几步执行:

1. 开前几章的Unity工程,Diorama场景,它从标准Asset中导入了一个人物包。

2. 在Project面板上,打开目录 Standard Assets/Characters/ThirdPersonCharacter/Prefabs,拖拽AIThirdPersonController到场景中,命名为Ethan.

3. 在Hieratchy面板中(或者场景面板),选择之前的ThirdPersonController(旧的Ethan),然后,在Inspector面板Transform属性,选中右上角的锯齿图标,选择COPY Component。

4. 在Hieratchy面板中(或者场景面板),选择新的Ethan,然后,然后,在Inspector面板Transform属性,齿轮图片中选“Paste Component Values”

5. 现在从Hierarchy选中旧的Ethan,你可以删掉它了。右键打开选项,点击“Delete”

说明一下,这个Controller有一个NavMesh Agent组件,还有一个AICharacterControl的脚本。NavMesh Agent组件有参数让Ethan围绕场景移动。AICharacterControl脚本为Ethan设了一个目标。我们这样来操作:

1.Hierarchy面板中加一个空物体

2.重置它的Tansform属性。

3. 重命名为WalkTarget。

4. 选中Ethan,然把后拖动WalkTarget到Inspector面板上的AI Character Control组件中的Target属性上。

到现在,在场景中,我们有一个AI角色,一个空的物体用作指引目标(WalkTarget),我们通知了AI Character Controller组件使用这个目标物体。当我们运行这个游戏,WalkTarget在哪里,Ethan就会跟着去,但现在还不行。

Navmesh 烘焙

可以漫步之前,Ethan还不能四下移动。我们需要定义一个NavMesh——一个简单的几何平面绘制障碍物的路径。

创建一个NavMesh,首先识别场景中的静态物体,然后,烘焙出来:

1.选中地面、三个立方体、小球,在Inspector在板上,有一个Static的复选框选中(你可以用Ctrl+点击的方式选中多个物体)

2.选择Navigation面板,如果在你的编辑器中没有,从主菜单 Window | Navigation打开它。

3.点击最下面的Bake按钮。

NavMesh定义好后,场景会显示一个蓝色的覆盖物,如下图所示:

检查一下Game面板上的游戏最大化(Maximize on Play)是呈非选中状态的。

让我们来测试一下。

点击Play铵钮。在Hierarchy面板上,选中WalkTarget,确认一下Translate小工具在场景中被激活,拖动WalkTarget物体上的红色的X,或是绿色的Z,来移动它。当你这样做的时候,Ethan会跟着它动,再次点Play铵钮,就会停止。

评论列表暂无评论
发表评论