首页 > 其他分享 >Unreal Engine 5 课程记录 蓝图部分(非教程)

Unreal Engine 5 课程记录 蓝图部分(非教程)

时间:2025-01-07 12:55:32浏览次数:1  
标签:Engine 教程 PlayerControl 创建 GameMode Character Actor Unreal 设置

学习课程:Unreal Engine 5 – Full Course for Beginners
非教程,仅学习记录及碎碎念,学完感觉UE就非常的像预制菜,简简单单就能有非常好的效果(非常に新鲜で、非常に美味しい!),但装料太足了要想拆分明白用料和流程又会比较复杂!

Creating Levels

创建基本关卡,几个组件一拖就能有比较好的效果了。skylight在只用这几个组件的时候好像没有什么效果,往后看看。

LandScapes

很容易上手的地形绘制功能,包括很多的基础功能。大概类似Unity Terrain的功能。

BluePrint

虽然个人更喜欢用代码来书写逻辑,但这个BluePrint确实在一些情况下写功能更方便。
LeveL Blueprint有两个起始结点,Event BeginPlay在场景开始运行时(第一帧)执行一次(Unity的monobehaviour类的Start()函数),Event Tick则是每帧执行一次(类比update()函数)。

对于函数,默认是每次需要调用都会获取新值,而不是用第一次调用得到的值。例如下例中,两次输出的位置是不同的。

蓝图中的变量,结构体,枚举,函数

没什么可以介绍的,都是C++相同的东西。

Macros

翻译过来是宏,有一些比较特殊的特性,比如能多输入多输出,能用Delay等等。但目前还不是很清楚具体使用场景。

Delay:比较特殊的函数,主线程不会因为 Delay 停止运行。
Delay 的实际执行过程如下:
1.当前帧运行到 Delay 时,定时器被注册。
2.主线程立即返回,继续处理其他任务(例如下一帧的 Tick)。
3.在 x.xx 秒后,定时器触发并执行 After Delay。
也就是说,在Tick中使用Delay不会影响帧率,但是会产生多个定时器。

Flip Flop

字面意思,两个分支每执行其中一个下次就执行另一个。

Do Once

只执行一次,但触发Reset后,再进入该事件依然可以执行。

classes/Actor

蓝图创建基本类就类似Unity中创建一个C#脚本书写类,创建Actor父类的类,就类似于创建了一个自带Object的C#脚本。

Actor可类比Object,Component倒是都一样叫法;

Actor的Tick可开可关,而且可以很方便的设置Tick的间隔。

在设置Static Mesh的时候发现,UE的Static Mesh是自带很复杂的碰撞体的,而且设置的Actor和LandScape创建的地面发生碰撞是不会触发Event ActorBeginOverlap的,可能默认设置两者的碰撞体不会触发Event ActorBeginOverlap。这块和Unity有很大的不一样,Unity中Mesh,Collision和Rigidbody完全是分开的组件。

Pawn:指代玩家控制的Actor。

Character/角色控制

根据介绍,Character就是可以四处走动的一种Pawn,创建一个Character(或者说创建一个继承自Character类的子类)通常自带4个组件,碰撞,朝向,Mesh和角色移动。

但如果想“操控”该Character,还需要设置一下GameMode,创建一个GameMode,然后将DefaultPawnClass设置为我们创建的Character,这时候启动游戏会使用设置的DefaultPawnClass创建一个Character,对于GameMode中没有声明的部分,都会创建默认的设置(比如相机,起始位置等,例如默认GameMode会创建了一个默认的Pawn给玩家控制)。

GameMode 定义游戏的规则。规则可以包括玩家加入游戏的方式、游戏暂停和关卡过渡以及任何游戏特定的行为,如获胜条件。每个关卡都设置了 GameMode,而且 GameMode 可在多个关卡中重复使用。

使用Add Movement Input控制移动

Add Movement Input只能在每帧运行的事件中生效(如Tick Events,InputAxis等),所以不能直接用Keyboard Events触发Add Movement Input,因为Keyboard Events只在事件发生的瞬间触发一次,而且不是基于帧渲染的频率(可以理解为不是在每一帧内检测是否按下的)。而且,用InputAxis Mapping支持修改键盘映射,Keyboard Events就直接固定了。

鼠标控制视角

同理,但默认视角控制只能控制Yaw。相机如果启用Use Pawn Control Rotation,对角色被冻结的轴相机可以旋转(在自身坐标系下),对角色也能旋转的轴则只旋转角色(角色带动相机旋转,在整个Character坐标系下)。

设置全局灵敏度

玩家在角色中设置的灵敏度在每次重新创建角色时都会变成默认值,所以需要一个全局的灵敏度,这样每次创建角色都能使用设置好的灵敏度,大概这种场景。

教程中通过在PlayerControl中创建一个变量,然后每次创建Character都读取这个变量来设置灵敏度实现。感觉用PlayerControl只是因为PlayerControl在会关卡开始且在Character的BeginPlay Event之前创建,这样能读到一个有效且整个关卡运行时都存在的值,那么放在GameMode中也是可以的,但是从功能上说,PlayerControl更合适。

想要在m_Character中使用m_PlayerControl的方法,需要Get父类PlayerControl再Cast to m_PlayerControl获取到m_PlayerControl,基本上所有自定义的子类都是这么获取的。

设置跳跃

然后想擅自实现一下跳跃,托了一个Jump到蓝图上,于是乎就完成了最基础的跳跃。嗯?我在期待什么,我地面检测呢,我控制逻辑呢。Character Movement说,我全帮你做好了,想跳的更高?想二段跳?都轻松拿下。

实现拾取功能

教程中的拾取功能拾取的是overlap的Actor中下标为0的Actor,简单添加了一下功能,实现在overlap多个Actor时,会拾取距离最近的Actor。

变量的可设置项

Expose On Spawn:暴露给Spawn,可以在蓝图中Spawn Actor时设置该变量。
instance editable:实例可编辑,在编辑器中可以直接编辑该变量。

实现推球功能

这里就不实现了,没有新的内容这块,推球是通过AddImpulse实现的,AddImpulse会给物体某个方向的力。通过开启组件的Actor Hidden In Game可以在游戏中显示该组件(比如碰撞体)。

Impulse vs Force
AddImpulse will apply the force vector without adjusting for frames per second (fps). AddForce adjusts the force vector according to the current fps as it is intended to be called every frame. For example, if your frame rate were 60 fps and you called AddForce once then you would have to multiply the force vector by 60 (or call AddForce 60 times) in order to get the equivalent effect as calling AddImpulse once.

描边

最简单的方法实现,正面剔除沿法线外扩渲染一次,正常渲染一次。没实现固定描边粗细,要实现的话在CS中计算外扩的距离即可。
UE好像没找到怎么直接给mesh增加材质的办法,应用多个材质的方法是增加多个子mesh,用不同的材质(?),或者用Modeling模式,但这个只能对内置的基础mesh修改材质数量。

Blend Mode:
详见:材质混合模式

这种描边对每个面片都是独立顶点的mesh会比较差,对简单的几何体的话,可以直接用个放大一些的mesh简单处理

RayTrace

这块也是介绍了下Line Trace怎么使用的,以及多相机如何选择当前使用的相机,用于Debug的图形的绘制。教程用的是Line Trace by Channel,这里Channel类似于tag,可以在碰撞体中选择如何处理各Channel的射线检测(忽略或者击中)。

创建UI

实现血条及血条控制,主菜单和关卡切换功能。
基本控制流程很容易理解。主要是熟悉各种组件的使用,设置鼠标是否可见,三种Input Mode的效果(Game only:鼠标限制在游戏窗口,且不能控制UI。UI only:只能控制UI,鼠标不会被游戏窗口限制。Game and UI:都可以控制,且鼠标不会被游戏窗口限制)。

创建蓝图函数库 blueprint function library

大概就是个自定义函数库,可以将一些需要使用到的,但与物体无关的功能性函数写在这。

静态网格/Nanite/材质

动画系统

Animation Blueprint可以看成是一个包含状态机及状态机条件控制的蓝图。针对骨骼网格,Animation Blueprint可以自动做到比较丝滑的在不同状态之间切换。
Blend Space:功能是通过参数混合多个动画。比如可以通过速度控制 站立 和 行走状态的混合动画。实现速度越快,人物行走动作越快。但由于键盘做不到轻推w,使用 Blend Space 的效果并不是很显著,所以添加了一个Shift跑步的功能。

站立到行走的状态切换虽然看着和Blend Space差不多,都实现了站立到行走的丝滑过渡,实际是发生在两个阶段的,一个在状态间,一个在状态内。

至此蓝图部分全部实现。

标签:Engine,教程,PlayerControl,创建,GameMode,Character,Actor,Unreal,设置
From: https://www.cnblogs.com/PAdiD/p/18649857

相关文章

  • SwanLab最全使用教程:看这篇就够了
    前言机器学习通常涉及在训练期间可视化和度量模型的性能。有许多工具可用于此任务。在本文中,我们将重点介绍SwanLab开源工具,它可以服务于各种深度学习训练任务(计算机视觉、自然语言处理、音频处理等等),也适配了PyTorch、Transformers、Keras这样的框架。一、什么是SwanLab?Sw......
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-11- 标签页(tab)操作 - 下篇 (详细教
    1.简介本来按照计划这一系列的文章应该介绍Context和Page两个内容的,但是宏哥看了官方文档和查找资料发现其实和宏哥在Python+Playwright系列文章中的大同小异,差不了多少,再在这一个系列介绍就有点画蛇添足,索性就不介绍和讲解了,有兴趣的自己可以看宏哥之前写的,或者自己查找资料和官......
  • 解决登录与SSO的开发痛点:Keycloak快速部署与最简单登录验证教程
    言简意赅的讲解Keycloak解决的痛点Keycloak是一个开源的身份和访问管理工具,提供单点登录(SSO)、用户管理、身份验证、授权等功能。它支持标准的身份协议如OAuth2.0、OpenIDConnect(OIDC)和SAML2.0,非常适合集成到现代微服务架构中。最简单的Keycloak登录验证示例在Ke......
  • 网站源代码修改教程
    修改网站源代码需要一定的编程知识,以下是详细的教程:准备工具:FTP工具(如FileZilla)文本编辑器(如VSCode、SublimeText)备份文件:使用FTP工具登录到服务器。找到需要修改的文件,下载到本地并备份。编辑文件:使用文本编辑器打开文件。根据需求修改代码,例如更改文字、调......
  • 视频编辑教程:用 AI 和剪映打造古诗视频
    以下是使用剪映制作视频的过程。用AI和剪映打造古诗视频:《夜书所见》的创意之旅伟贤AI之路一、素材准备(AI)先得把“建筑材料”备齐。这方面我已经写过相关的智能体及文章介绍,可以参考AI智能体实战案例,借鉴“实现一个自动生成小学生古诗词精读讲稿及插画的智能体”和“A......
  • 基于 docker 安装 nginx 详细教程
    1.创建普通用户用于管理docker在本教程中我们创建一个普通用户来进行后续的docker相关服务的配置与运维。当然本操作是非必须的,你可以直接使用root用户来直接操作,对整个流程没有影响。不想创建用户请直接跳过第一部分,从第二部分开始操作即可。创建普通用户 lidyuseraddl......
  • MediaWIKI 1.43 教程系列 4 — MediaWIKI 安装后的基本配置
    1.更改logo  将自己的logo导入到Mediawiki的安装目录,即/var/www/mediawiki/里面的 /resources/assets  然后修改LocalSettings.php 文件内容,更改如下$wgLogos=['1x'=>"$wgResourceBasePath/resources/assets/mediawiki.png",'icon'=>&quo......
  • 【SD教程】一文教你图生图批量处理!
    今天给大家讲解一下SD图生图的批量处理功能应该如何让使用~(AI绘画SD整合包、各种模型插件、提示词、AI人工智能学习资料都已经打包好放在网盘中了,无需自行查找,有需要的小伙伴文末扫码自行获取。)一、图生图批量处理功能的基本用法首先打开webUI,在图生图页面下我们先找到批量......
  • DataGrip 2024.3.3 安装激活详细使用教程(激活至2026,实测是永久,亲测!)
    开发工具推荐:DataGrip安装激活详细使用教程(激活至2026,实际上永久,亲测!)申明:本教程DataGrip补丁、激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除。若条件允许,希望大家购买正版!DataGrip是JetBrains公司推出的一款功能强大的数据库语言集成开发环境(IDE),凭......
  • 2025最新版漏洞挖掘教程,一文讲清挖漏洞需要掌握哪些技术,网络安全零基础入门到精通收藏
    经常有小伙伴问我,为什么自己总是挖不到漏洞呢?渗透到底是什么样的流程呢?所以全网最详细的渗透测试流程来了!!!全篇文章内容较长,请耐心观看!文章目录渗透测试一确定目标二信息收集三漏洞探测四漏洞利用五内网转发六内网横向渗透七痕迹清除八撰写渗透测试保......