内容简介
本书可以让我们沉浸在虚幻的游戏项目中,由行业内四位经验丰富的专业人士撰写,他们有着多年的虚幻引擎开发经验。本书将帮助我们亲身体验游戏项目创作,并了解最新版本的虚幻引擎。首先介绍了虚幻编辑器和关键概念,如Actor、蓝图、动画、继承和玩家输入。然后,进入第一个项目:构建躲避球游戏。在此过程中,我们将学习射线检测、碰撞、投射物、用户界面和音效的概念。第二个项目是横版动作游戏,在游戏的制作过程中我们将理解动画混合、敌人人工智能(AI)、生成对象和收集物品等概念。第三个项目是一款第一人称射击游戏,游戏涵盖创建多人游戏的关键概念。学完本书,我们将对如何使用虚幻引擎提供的工具来构建自己的游戏有一个全面的了解。
卖点1 全面实用,168个知识重、难点讲解,覆盖Unreal Engine 5C 必掌握知识点,助您全面了解UE5 C 游戏开发的逻辑和实操方法。
卖点2 构建三个完整的可玩游戏,让读者在实践中逐步掌握游戏开发方法,通过完成躲避球游戏、横版动作游戏、第一人称游戏,三款功能完备的游戏来巩固读者所学知识并提升学习信心。
卖点3 全彩印刷,详尽步骤讲解,配以丰富操作演示图例,参数设置、操作效果一目了然,适合新手读者模仿操作。
卖点4 提供本书配套代码资源、全书图片、部分章节教学视频以及额外赠送资源的下载服务(读者也可以自行从GitHub下载)
目录
第1章 虚幻引擎简介
1.1 技术要求
练习1.01 创建虚幻引擎5项目
1.2 了解虚幻引擎编辑器
1.3 浏览编辑器窗口
1.4 “视口”选项卡
1.5 操作actor
练习1.02 在关卡中添加和删除actor
1.6 理解蓝图actor
练习1.03 创建蓝图actor
1.7 蓝图编辑器
1.8 “事件图表”选项卡
练习1.04 创建蓝图变量
练习1.05 创建蓝图函数
1.9 理解Multiply节点
1.10 探索BeginPlay和Tick事件
练习1.06 在Z 轴上偏移TestActor类
1.11 BP_ThirdPersonCharacter蓝图类
1.12 探索网格体和材质的使用
1.12.1 网格体
1.12.2 材质
1.13 在虚幻引擎5中设置材质
活动1.01 在Z 轴上无限推动TestActor
1.14 本章总结
第2章 使用虚幻引擎
2.1 技术要求
2.2 创建并设置一个空白C 项目
练习2.01 创建一个空的C 项目
2.3 在虚幻引擎中内容文件夹的结构
2.4 使用Visual Studio解决方案
在Visual Studio中调试代码
练习2.02 调试第三人称游戏模板代码
2.5 导入所需资产
练习2.03 导入角色FBX文件
2.6 虚幻引擎游戏模式类
2.6.1 游戏模式的默认类
2.6.2 游戏事件
2.6.3 网络
2.6.4 游戏模式基础与游戏模式
2.6.5 关卡和关卡蓝图
2.6.6 虚幻引擎Pawn类
2.6.7 玩家控制器类
练习2.04 设置游戏模式、玩家控制器和Pawn类
2.7 使用动画
2.7.1 动画蓝图
2.7.2 “事件图表”选项卡
2.7.3 AnimGraph
2.7.4 状态机
2.7.5 过渡规则
2.7.6 混合空间
练习2.05 创建人体模型动画
活动2.01 将动画链接到角色
2.8 本章总结
第3章 角色类组件和蓝图设置
3.1 技术要求
3.2 虚幻引擎角色类
扩展角色类
练习3.01 创建和设置第三人称角色C 类
3.3 用蓝图扩展C 类
练习3.02 使用蓝图扩展C
活动3.01 在动画项目中使用蓝图扩展C 角色类
3.4 本章总结
第4章 玩家输入入门
4.1 技术要求
4.2 理解输入操作和输入映射情境
练习4.01 创建移动和跳跃输入操作
4.3 处理玩家输入 77
练习4.02 监听移动和跳跃输入操作
围绕角色转动摄像机
活动4.01 为角色添加行走逻辑
4.4 本章总结
第5章 射线检测
5.1 技术要求
5.2 碰撞简介
5.3 设置项目
练习5.01 将DodgeballCharacter转换为俯视的视角
5.4 理解射线检测
5.5 创建EnemyCharacter C 类
练习5.02 创建执行射线检测的CanSeeActor函数
5.6 可视化射线检测
练习5.03 创建LookAtActor函数
5.7 创建EnemyCharacter蓝图类
5.8 扫掠检测
练习5.04 执行扫掠检测
5.8.1 更改可见性检测响应
5.8.2 多射线检测
5.8.3 摄像机检测通道
练习5.05 创建一个自定义的EnemySight检测通道
活动5.01 创建SightSource属性
5.9 本章总结 109
第6章 设置碰撞对象
6.1 技术要求 111
6.2 理解虚幻引擎5中的物体碰撞 111
6.2.1 理解碰撞组件
6.2.2 理解碰撞事件
6.2.3 理解碰撞通道
练习6.01 创建Dodgeball类
6.3 创建物理材质
练习6.02 将ProjectleMovementComponent添加到
DodgeballProjectile中
6.3.1 定时器简介
6.3.2 理解如何生成actor
练习6.03 向EnemyCharacter类添加投掷逻辑
6.4 创建Wall类
练习6.04 创建Wall类
6.5 创建VictoryBox actor
练习6.05 创建VictoryBox类
练习6.06 给DodgeballProjectile类中添加ProjectileMovementComponent的
getter函数
活动6.01 将SpawnActor函数替换为EnemyCharacter中引用的
SpawnActorReference函数
6.6 本章总结
第7章 使用虚幻引擎5中的实用工具
7.1 技术要求
7.2 好的实践——松耦合
7.3 蓝图函数库
练习7.01 将CanSeeActor函数移动到蓝图函数库中
7.4 Actor组件
练习7.02 创建HealthComponent的Actor组件
练习7.03 集成HealthComponent Actor组件
7.5 探索接口
7.6 蓝图本地事件
练习7.04 创建HealthInterface类
活动7.01 将LookAtActor逻辑移到Actor组件
7.7 本章总结
第8章 使用UMG创建用户界面
8.1 技术要求
8.2 游戏用户界面
8.3 UMG基础知识
练习8.01 创建控件蓝图
8.3.1 锚点的简介
练习8.02 编辑UMG锚点
练习8.03 创建RestartWidget C 类
试读
第13章 创建和添加敌人人工智能
在上一章中,我们为玩家角色添加了分层动画,其中使用动画混合结合动画插槽、动画蓝图,以及Layered blend per bone等混合函数。有了这些知识,我们就能够顺利地将投掷动画蒙太奇与基本运动状态机平滑混合,为角色创建分层动画。在本章中,我们将讨论以下内容。
如何使用导航网格体(Navigation Mesh)在游戏世界中创建敌人可以移动的导航空间。如何使用虚幻引擎5中提供的包括黑板和行为树等的人工智能工具组合,创建一个可以在游戏世界中巡逻点位置之间导航的敌人。如何使用变换向量将局部变换转换为世界变换。如何在C 中创建一个玩家投射类,以及如何实现OnHit()碰撞事件函数来识别和记录投射在游戏世界中击中对象的情况。
13.1 技术要求
本章主要采用在“第12章 动画混合和蒙太奇”中创建的C 敌人类,并与人工智能相结合,
使这个敌人“活”起来。虚幻引擎5使用许多不同的工具来实现人工智能,例如AI控制器(AI
Controllers)、黑板(Blackboards)和行为树(Behavior Trees)等,我们将在本章中学习和使用这些功能。
在本章结束时,我们能够创建一个敌人可以移动的空间。我们还能够创建一个敌人人工智能
pawn,并使用黑板和行为树在不同的位置之间导航。最后,我们能够创建和实现一个玩家抛射
类,并添加视觉元素。在研究这些系统之前,让我们先花点时间了解近年来人工智能在游戏中
的发展。自从《超级马里奥兄弟》(Super Mario Bros)问世以来,人工智能无疑已经发生了巨大变化。
学习本章,技术要求如下:
安装虚幻引擎5。
安装Visual Studio 2022。
13.2 敌人人工智能
什么是人工智能(AI)?根据使用它的领域和背景,这个术语可以有很多含义,我们以一种
与视频游戏主题相关的方式来定义它。
人工智能是一种能够感知到其周围的环境并选择最优实现预定目标的实体。人工智能使用所
谓的有限状态机(finite state machines),根据从用户或环境接收到的输入在多个状态之间切换。例如,视频游戏人工智能可以根据其当前的生命值在进攻状态和防御状态之间切换。
在使用虚幻引擎4开发的《你好邻居》(Hello Neighbor)和《异形:隔离》(Alien: Isolation)
等游戏中,人工智能的目标是尽可能高效地找到玩家,但也要遵循开发者定义的一些预先确定的模式,以确保玩家能够比人工智能聪明。其中,《你好邻居》为人工智能添加了一个非常有创意的元素,即让人工智能从玩家过去的行为中学习,并尝试基于所学到的知识去战胜玩家。
我们可以在游戏发行商TinyBuild Games提供的视频中找到人工智能如何工作的详细信介绍,
链接:https://www.youtube.com/watch?v=Hu7Z52RaBGk。
有趣且富有挑战性的人工智能对于任何游戏都至关重要,而人工智能的复杂程度则取决于所
创造的游戏类型。我们将为超级横版动作游戏创造的人工智能不会像之前提到的那样复杂,但它将满足我们想要创造的游戏的需求。
让我们来分析一下敌人的行为。
敌人是一个非常简单的角色。他们有一个基本的来回移动模式,不具有任何攻击的动作,
只有通过与玩家角色发生碰撞才能造成伤害。
为敌人人工智能设置移动的位置。
接下来,我们必须决定人工智能是否应该改变位置、是否应该在位置之间不断移动,或者是否应该在选择移动到新位置之间暂停。
幸运的是,虚幻引擎5提供了大量的工具,我们可以使用这些工具开发如此复杂的人工智能。
在项目中,我们将使用这些工具来创建一个简单的敌人类型。下面让我们从讨论虚幻引擎5中的AI控制器开始。