文章目录

  • 一、引言
  • 二、游戏展示
  • 三、整体大纲
  • 四、内部实现
    • 1、创建工程
    • 2、创建游戏中的第一个资产(一个小盒子)
    • 3、创建地形(地形工具,切换到地形模式)
    • 4、创建地形中的植被(草、石头)并刷到场景中
      • 1、草地
      • 2、其他植被
    • 5、创建游戏的控制器包括(游戏模式、玩家控制器、pawn)
      • 1、游戏模式
      • 2、玩家控制器
      • 3、Pawn
    • 6、给角色添加动画蓝图以控制角色动作
      • 1、导入角色对应网格体、骨骼、动画序列
      • 2、创建动画蓝图,**并回到角色中将"动画模式"变更为使用动画蓝图,"动画类"变更为刚刚创建的动画蓝图**,如图二
      • 3、使用状态机对动画进行控制,分别是Idel、Walk、Run之间的转变
        • 1、创建状态机节点并连接
        • 2、在状态机中设置转化条件及对应动作
        • 4、Walk/Run
    • 7、创建场景中的NPC即AI(AIController+NavMeshBoundsVolume组件)
    • 8、角色添加可以“下蛋”到脚底的功能,并给AI添加寻路至蛋的位置
    • 9、丰富场景中的交互(按钮+门)
      • 1、使用重叠检测实现按钮的开关功能
      • 2、创建碰撞检测组件用于监测按钮的按下和弹起
      • 3、根据碰撞检测组件的触发事件开关门
    • 10、给场景内的角色移动增加扬尘效果(特效)
    • 11、给角色行走添加声音
    • 12、在门开启的时候给相机添加抖动
    • 13、游戏打包

一、引言

对于刚接触UE的人来说,如何从0—>1创建出一个自己的小游戏,UE5官方提供了一个很棒的案例,如下
《Your First Game In Unreal Engine 5》视频原文
需要准备的材料有:
1、UE5引擎
2、Stack O Bot 提供的资源
3、耐心的看完这篇文章(浓缩了整个视频的精华)

二、游戏展示

三、整体大纲

1、创建工程
2、创建游戏中的第一个资产(一个小盒子)
3、创建地形(地形工具,切换到地形模式)
4、创建地形中的植被(草、石头)并刷到场景中
5、创建游戏的控制器包括(游戏模式、玩家控制器、玩家的pawn)
6、给角色添加动画蓝图以控制角色动作
7、创建场景中的NPC即AI(AIController+NavMeshBoundsVolume组件)
8、角色添加可以“下蛋”到脚底的功能,并给AI添加寻路至蛋的位置
9、丰富场景中的交互(按钮+门)
10、给场景内的角色移动增加扬尘效果(特效)
11、给角色行走添加声音
12、在门开启的时候给相机添加抖动
13、游戏打包

四、内部实现

1、创建工程



打开光照混合器,并将下面包括“创建天空光照”在内的几种光照都加入到环境中

经过上述操作,场景中就从一片黑暗变得丰富多彩了
Tips:
Ctrl + l:旋转书标可以改变太阳光(直射光)的直射方向
Ctrl + space:可以呼出资产面板(非常爽)

2、创建游戏中的第一个资产(一个小盒子)


将上述资源及对应的图片资源导入UE5中,有如下几种资源

接下去分别对“M_Metal”、“M_Carbon”、“M_Plastic”进行材质赋予

上面这种,是最基础的,即将一种颜色赋值给一种材质

上图是将一张贴图赋予材质的表面作为基础色,并将存有法线信息的图(法线图)设置到该材质的表面使其产生凹凸感,texcoord将两张图进行平铺即扩展使纹理更细密,下面两张图也是大同小异,不在介绍

如果对渲染不了解的可以不去研究material的连线什么含义,直接全部采用第一张的最简方式也可以

经过上述几种材质的加持,盒子便带有塑料、布料、金属等特质

3、创建地形(地形工具,切换到地形模式)

UE5自带了地形工具,如下进行切换

之后对地形进行创建,设定好需要的尺寸后点击创建

如果看不到创建出来的地形,设置一下场景中的显示,勾选上地形

创建一个材质并赋予其材质,如下的“My_LandScape_M”,并创建两个层分别是"Grass"、“Sand”

接着创建层信息,如下


至此我们可以通过笔刷对场地进行绘制,如下,场景可见两种颜色

接下来我们对两种环境"沙漠"、"草地"进行装饰,只需要将地形的材质进行扩展即可,原理同其他材质一般


此时能够看到沙漠和草地均出现了纹理

4、创建地形中的植被(草、石头)并刷到场景中

只有颜色和纹理的地形终究还是缺了点立体感,因此我们要在场景中加入各种植被,如草、石头、花、树

1、草地

创建如下植物

设置上述创建的植物的草地网格体为我们导入的草,其他诸如草地密度等参数可以自行调整

接着设置草的material,要注意的是要将草的混合模式设置为"已遮罩"

其中要注意上图右下角的两个节点,分别是左边"LandscapeLaerSample",右边是"LandscapeGrassOutput",通过设置这两个节点,可以在地形为Grass自动生成草,最后我们将一开始创建的"地形草地类型"设置到"LandscapeGrassOutput"中,草地即可自动生成

2、其他植被

相比起草地,其他类型的植被需要我们手动去刷,而不是自动生成,首先我们需要将植被创建出来

对于网格体面数比较多的植被,需要勾选编译Nanite,否则会出现植被制作完之后加载不出来的情况,Nanite技术在Matt虚幻引擎4->5的转化视频中、Chris Murphy在教程中会介绍

创建植物

同草一样将网格体设置给该植物

需要注意的是,岩石的体积较大,不像草一样能够不添加碰撞体,因此我们需要设置岩石的碰撞为"BlockAll"

下图为该岩石的material,不展开介绍

最后将岩石添加到植被中,如下

之后就可以笔刷刷岩石了

其他植物的创建同上,最终呈现的效果如下

5、创建游戏的控制器包括(游戏模式、玩家控制器、pawn)

1、游戏模式

GameMode定义了我们当前的游戏。它规定了游戏规则、评分、允许哪些actors在游戏中存在,以及谁可以进入游戏。

创建好GameMode之后,需要将GameMode中的**“玩家控制类”、“默认pawn类”**,并且到项目设置中将我们创建的GameMode设置上去,如图二

2、玩家控制器

PlayerController作为游戏中角色和玩家之间接口,本质上代表了玩家的意志,通常情况下,我们会将角色的所有输入定义在PlayerController里面,特别是对于一些复杂的情况,例如多玩家游戏或者游戏运行中动态更改角色的游戏,在这些游戏中由PlayerController对角色发出指令。

另外在某些情况下,将输入定义在PlayerController是必须的,例如超级马里奥这种角色可能会死亡并重生,重生之后会得到一个新的角色,导致存储在角色上的数据会被重置。但是PlayerController是在整个游戏中持续存在的,比如马里奥中的金币,因为存在PlayerController中,因此不会被重置。

这里没有将玩家的控制放在Controller中,转而放到了Pawn中,不过也不影响游戏的运行,因为这是一个单人单机游戏

3、Pawn

Pawn是Actor的子类,它可以充当游戏中的化身或人物(例如游戏中的角色)

我们会在"MyCharacter"中赋予角色移动及转向功能,这几个输入功能几乎是和整个游戏直接绑定的(不会随着游戏状态的变化而发生变化,例如W由前向行走变成释放技能),因此我们直接在输入设置中配置如下图

接着赋予这几个输入事件以功能,如下图

6、给角色添加动画蓝图以控制角色动作

使用UE自带的动画蓝图实现

1、导入角色对应网格体、骨骼、动画序列

角色材质的设置如下:

2、创建动画蓝图,并回到角色中将"动画模式"变更为使用动画蓝图,"动画类"变更为刚刚创建的动画蓝图,如图二


3、使用状态机对动画进行控制,分别是Idel、Walk、Run之间的转变

1、创建状态机节点并连接

2、在状态机中设置转化条件及对应动作

总图

Idel节点

Idel To Walk条件

Walk To Idel条件

Walk/Run节点在4中单独讲述

4、Walk/Run

这里我们将Walk/Run设置为同一个状态,通过角色身上的速度值来改变角色动画:
需要先获取角色速度,如下,在蓝图的事件图表中定义Speed,并对其进行赋值

创建混合动画,并暴露混合动画的控制变量Speed,如图二中**"水平坐标"的设置**


设置Walk/Run节点

7、创建场景中的NPC即AI(AIController+NavMeshBoundsVolume组件)

创建AIController;将AIController设置给场景中NPC;在场景中添加寻路检测NacMeshBoundsVolume;编写AIController蓝图,NPC得以获得目标



AIController的逻辑会在8中给出
Tips:P可以切换NavMeshBoundsVolume组件的可见性

8、角色添加可以“下蛋”到脚底的功能,并给AI添加寻路至蛋的位置

创建“蛋”的蓝图(继承自Actor);在PlayerController中创建“下蛋”逻辑;在AIController中创建“寻蛋”逻辑(包含FindBall函数的实现+NPC找到蛋后的逻辑);在“蛋”蓝图中实现重叠销毁自身逻辑
上述实现分别对应下面5图



9、丰富场景中的交互(按钮+门)

1、使用重叠检测实现按钮的开关功能

当按钮与其他物体重叠时,对按键执行一个向下移动模拟按下同时触发“碰撞检测组件”的碰撞开始事件(详看下面);结束重叠时反之

timeline节点的设置如下

2、创建碰撞检测组件用于监测按钮的按下和弹起

碰撞检测组件继承自ActorComponent,可以挂接到任意Actor上,组件承担事件分发的功能

3、根据碰撞检测组件的触发事件开关门

定义“OpenDoor”、“CloseDoor”事件,并且检测按钮对象身上的碰撞检测组件,如果碰撞了就执行“OpenDoor”;反之执行“CloseDoor”
注意左下角的Trigger需要对其开放(眼睛张开),方可在场景中指定其对象

timeline节点的设置如下

最后我们需要将场景中的门指定其Trigger(对应的按钮拖入)

10、给场景内的角色移动增加扬尘效果(特效)

创建Dust特效;将其挂载在动画对应的帧上



11、给角色行走添加声音

与挂接特效一样,只是创建的对象变成了音效


12、在门开启的时候给相机添加抖动

UE自带了相机抖动的基类,直接使用即可,创建完后只需要在门开关状态发生变化后播放相机抖动即可(如本章最后一图)


13、游戏打包


如若出现上图诸如Android等左侧的警示符,只需更新/下载对应的SDK即可(Visual Studio内找)

UE5——创建你的第一个游戏相关推荐

  1. 创建你的第一个游戏Pong——让我们编写Pong

    让我们编写Pong 游戏构思都解决了,并且所有你需要着手的文件也有了.是做实际编码的时候了.首先,注视SpriteBatch类,并且看看如何不费力地管理所有的sprite精灵.SpriteBatch类 ...

  2. sql2008带扣号字符串_带扣:在您的第一个游戏果酱中创建自己的卡丁车游戏

    sql2008带扣号字符串 The Karting Microgame video game template just got a serious makeover to help new user ...

  3. Blender与UE5完美结合全流程创作游戏资产视频教程

    Blender到虚幻引擎5 Blender to Unreal Engine 5 MP4 |视频:h264,1280×720 |音频:AAC,44100 Hz 语言:英语+中英文字幕(根据原英文字幕机 ...

  4. apple id无法创建_我们如何使用Apple的学习框架来创建我们的第一个应用程序

    apple id无法创建 by Jonata Corrêa 由JonataCorrêa 我们如何使用Apple的学习框架来创建我们的第一个应用程序 (How we used Apple's learn ...

  5. Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏

    Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏 即使是现在,很多初学游戏开发的同学,在谈到Unity的时候,依然会认为Unity只能用于制作3D游戏的.实际上,Unity在2013年发布 ...

  6. iOS cocos2d 2游戏开发实战(第3版)---你的第一个游戏!

    2019独角兽企业重金招聘Python工程师标准>>> 随着苹果公司不断地创新与发展,新的iPhone 5.iPad 4以及iPad mini产品相继问世,包括iOS与Xcode在内 ...

  7. 【吼吼睡cocos2d学习笔记】第四章 - 第一个游戏

    来让我们开始第一个游戏的制作. 这个过程可能有点艰辛,但是只要坚持下来,第一个游戏往往能给我们带来巨大的收益(当然这个收益不是经济上的:-P) 先上截图: iPad中: 游戏构思 角色 在屏幕的上方, ...

  8. 我用unity开发的第一款游戏demo心得

    本人目前大一,双非一本,谨以此博客,记录日后的unity学习过程与算法训练.希望能同大家一起进步!也希望三年后回过头来能看到一个优秀而拼搏的自己! 话不多说,上我的第一个demo(虽然是跟着视频做的) ...

  9. jMonkeyEngine译文 FlagRush1——通过SimpleGame创建你的第一个应用程序

    今天在实验室忙了一下,趁着有空整理了jME的第一篇翻译,献给想在Java3D方面发展的人. 注:本系列教程全部翻译完之后可能会以PDF的形式发布. 如果有什么错误可以留言或EMAIL:kakashi9 ...

最新文章

  1. 嵌入式linux 升级,嵌入式Linux的OTA更新,基本原理和实现
  2. ADPRL - 近似动态规划和强化学习 - Note 8 - 近似策略迭代 (Approximate Policy Iteration)
  3. GT Transceiver的复位与初始化(3)TX初始化和复位流程
  4. 单片机指令周期、机器周期、状态周期、时钟周期
  5. 【Linux】一步一步学Linux——groupadd命令(87)
  6. purple-class2-默认选项切换
  7. 实践中的事件源和CQRS
  8. css实现背景颜色透明,文字不透明
  9. 疫中行,程序员可在家免费学这些!
  10. css span 右端对齐_使用 CSS 实现具有方面感知的幽灵按钮
  11. BP神经网络参数设置及实例
  12. 坑nyoj1088 just do it
  13. 第一章 Shiro简介——《跟我学Shiro》[张开涛]
  14. 电子邮件工作原理_为什么不应该放弃电子邮件,以及我们在工作中进行交流的方式...
  15. vs2013+qt生成的exe无法找到入口,无法定位程序输入点与动态库*.exe,而不是DLL
  16. 多服务器显卡使用状态监控工具实现
  17. 朱松纯团队工作登上 Science 头条—AI“读懂”人类价值观
  18. 采用拉丁超立方采样的电力系统概率潮流计算 拉丁超立方采样属于分层采样,是一种有效的用采样值反映随机变量的整体分布的方法
  19. Python实现Word表格转成Excel表格
  20. PgAdmin3 F7

热门文章

  1. [课业] | 软件安全 | 使用OllyDbg破解TraceMe.exe程序
  2. 【RabbitMQ】消息中间件|入门安装|centos8|一通百通
  3. TOT(Tree of Thought) | GPT-4+dfs搜索算法提升大模型复杂问题解决能力
  4. 途牛旅游项目——注册功能_功能分析
  5. 输入法中的全角与半角的区别
  6. css公用样式文件,CSS公用样式.doc
  7. 协方差分析 | ANCOVA (Analysis of Covariance) | R代码
  8. PyTorch----Softmax函数与交叉熵函数
  9. MCE | KRAS 突变型肺癌耐药性探索
  10. PHP基金会三月新闻公告发布