一个开发者的点滴积累
简介
现今,网上有大量优秀的资源供游戏开发者学习如何使用UE4内置的AI功能。不幸的是,这些资料中,有许多已经过时了,还有的要么是教授特定的功能点,要么是大型系列教程中的一部分,甚至还有假设你拥有一些你根本不知道的知识的。
本博文系列旨在给读者提供一个可以一步步实践的示例,用的是UE4(4.17版)的AI系统。文章面向的读者群体是向中级开发者过度中的初级开发者。本文将会用蓝图和C++两种方式来介绍如何使用AI功能,每一个功能都会先给出一个蓝图的使用示例,然后用C++来实现相同的功能。
本文假设读者已经具备了基础的使用引擎和编辑器的技能,至少需要实践过蓝图快速入门指南和编程快速入门这两篇文章中的内容。
目标
在接下来的几篇博文中,我们会做一个只使用AI的demo项目,项目的名称是"Game of Tag"。
我们要一步步的完成这个项目,使用的初始工程是一个几乎完全空白的项目。然后,用虚幻游戏性框架逐步完成我们的项目。
这篇文章里,我们就来看看如何使用AI驱动角色。当然,这也少不了虚幻4的导航系统(Navigation System)的帮助。
建立工程
下载初始模板。
这个简单的工程里只包括了一个人体模型(从UE4模板中弄出来的)以及一个基本的角色蓝图(BP_TagCharacter)。BP_TagCharacter中设置好了网格(Mesh)和动画蓝图(Animation Blueprint),并且相关的组件也已经调整到合适状态。最后,工程还包含了一个基本的几何关卡,用来测试我们的AI。
另外,如果你在用git,你也可以从我的Bitbucket仓库中获取工程。最初的下载提示里有template标签。代码库的状态(每篇博文的最后)也会根据文章名来标记(比如basic-navigation)。
在做什么大改动之前,我们先做一个小功能——用UE4的导航系统让AI Character可以四处走动。
UE4导航系统提供了Nav Mesh(Navigation Mesh,导航网格)来确定关卡中哪些地方是可以走动的。要构建一个导航网格,我们直接添加一个NavMeshBoundsVolume就行了,注意要把它放大到包含所有可以到达的地方!
大小调整好之后,按下P键就可以看到Nav Mesh了。
当你把Volume添加到关卡中时,你一定注意到了有一个名为RecastNavMesh-Default的角色也被加进去了。我们可以修改这个角色的设置来看到NavMesh的不同元素。当然,我们也可以通过它来调整网格的生成方式。
选中RecastNavMesh-Default,在细节面板中调整Agent Radi