ue4 种 角色蓝图如何获取关卡中actor中变量?

我是个非常喜欢虚幻4的小白,只是想分享一些我在学习虚幻4中的一些心得和对专有名词的个性化理解,鄙人不才,虽然实现了“目标偏移”和“人物静止时看得到脸,运动时看不到脸”的功能,不过还只停留在记忆层面。我是很想知道原理的人,所以思考过后,决定从整个“旋转”方面入手,这两天就被标题中的三个设定所困扰。

核心问题就是pawn到底该如何理解,它到底是个什么东西,我用了组控制变量实验,在文末我会阐明实验的准备工作并放上最能指明pawn的两个实验,喜欢的就鼓励鼓励,哪里错了也请指正。

为了方便我自己或者是各位读者理解,先放三个设定界面的图:

摄像机设置:人物蓝图——springarm细节面板——摄像机设置。

四项全打勾,使得摄像机能够在空间内移动。

将“将旋转朝向运动”打勾,使得角色的旋转与运动方向一致,教程上说是“角色朝向只与键盘有关”

人物蓝图—类默认值—pawn

使用控制器旋转yaw打勾。

补充:pitch:以Y为轴体旋转,yaw:以Z为轴体旋转:roll:以X为轴体。

根据上三图,不难发现一个共有的,最常被使用的东西——pawn。我不放官方解释,发表一下我经过不断实验得出的个人见解。不过在这之前,先看一个UE4中封装好的用来获取鼠标运动并输出轴值给“pawn”的函数。(“pitch”可以替换为‘yaw’或者‘roll’)

此函数的作用是获取鼠标的运动方向及缩放比例,并输出以“??”轴旋转的轴值给其指向的对象“pawn”

何为鼠标的运动方向及缩放比例?——设置——项目设置——引擎——输入——绑定——在两个轴映射中根据自己的选择自定义全局事件,并在事件的字框中选择按那个控制键触发。

鼠标X:你横向移动鼠标

缩放1.0:首先,他有正负值,正为右左为负。1.0的意思:引擎中实际操作次数与你手工操作次数的比例

回到pawn:pawn的汉语翻译是“棋子”——被利用的人,主要意思是能被控制,但不是控制器。在这里的功能中,就有一个特殊的pawn——character,虽然character有角色的意思,但这并不意味着pawn就是等于人物模型“actor”

那pawn到底是个什么东西呢?其实是无形的,我们可以做这样一个实验,首先你得编写好如下蓝图:

视角的上下左右可以跟随鼠标走向的基础蓝图——是个必要不充分条件

是为了实现“禁止时可以看到角色的脸,运动是看不到”但在这里我们只是借用其后半部分的设置变量的功能。即——————

类默认值的pawn属性中roll pitch yaw旋转是否可用和character movement细节面板中的角色移动(旋转设置)中的将旋转朝向运动是否可用。

但必须联合人物蓝图中的相机设置

你们可以根据自己的实验方法手动勾选或取消这三样及其子变量,从大串“控制变量”的实验中得到自己想证明的东西。

我要洗澡去了,这里直接放上最能说明pawn的实验,我先声明一个假设:类默认值中pawn的旋转属性这栏,使用控制器旋转“pitch”、“yaw”、“roll”这些选项只是限制pawn的旋转方向,而非确定pawn能否旋转。

第一步:三个板块的变量全部设false,即不打勾。

第二步,在蓝图中添加函数“获取控制旋转”会有行小字,目标是pawn,然后从“returne value”拉出引线添加“拆分旋转体“然后将Z拉出提升为变量(为什么是Z?因为你的鼠标在以Z为轴的平面上),最后添加”打印文本“,如图所示:

切记连接执行引脚,可以在前方添加”事件tick“即每一帧都执行。

然后运行,你会发现,你视角无法变化,但是随着鼠标的移动,有些数据一直在疯狂的变化:

数据不断变化,并可察觉这是个以Z为轴的旋转变化,因为数据是-360~360。如果诸位读者也在做实验,不妨试着一边用键盘操控人物,一边疯狂移动鼠标(前提是你已编写好相关事件蓝图)你会发现一个很奇怪的现象——在按住向前的按钮没有按其他按钮的情况下,随着鼠标的移动,人物会朝着不同方向移动,注意!!这个朝着不同方向不是脸朝着不同方向!!——对于这个以后再做探究。

根据实验结果以及我们刚刚编写的第三个含有”打印文本“封装函数的蓝图可知,这些数据是由pawn的旋转引起的,也就是由鼠标控制引起的,所以得出:类默认值的“pawn”旋转属性只是对其依照哪一轴旋转进行设定,并不是设定他是否能旋转。无论如何,只要你对pawn进行了值得更新,他就会旋转

第二个实验:得出的视觉效果就是浏览模型

第一步:将人物蓝图中类默认值的三个旋转值全打勾,

你就在浏览模型了。如图:

也许你会说,为什么左右不行,我是这样理解的:鼠标怎么立体呀?

根据两个实验,我认为人物actor中的pawn其实就是actor脚底下与其相连的一个无形的东西,让人误以为pawn=actor的原因是

这个东西与人物一体控制着人物的旋转,只要那个封装函数在,不管默认值可不可用,pawn一直在旋的转,最后一句是最重要

我还会继续深入研究,也请大佬们用自己的理解方式纠正我

Ue4提供了几种不同类型的蓝图,分别为关卡蓝图,蓝图类,宏,接口,它们有者不同的使用方式和适用场景,关卡蓝图可以作用于整个关卡的全局事件图表。它保存了关卡中所以实例化Actor的引用,可以对关卡内的所以Actor实例进行操作。
每一个关卡对应一个关卡蓝图,关卡蓝图无法新建,只能打开默认的关卡蓝图并使用。


点击打开关卡蓝图,(蓝图界面详细信息可查看 )如下图


在视图中选中刚创建的Cude,如图


还有一种方法,在世界大纲中选中要操作的Actor对象,将其拖拽到关卡蓝图的事件图表中

并添加执行事件“1”键

这样,每次按下“1”键,Cude将向X轴偏移10个单位

本页介绍了有关如何使用 Get All Actors of Class 节点在关卡中查找 Actor 的示例。调用此节点将检索关卡中指定类的所有 Actor,并将其放置在数组(变量集合)中, 您可根据所需的筛选标准从该数组中抽取所有 Actor 或单个 Actor。然后,您可以访问 Actor 的属性或基于当前 Actor 的类型以及您要实现的目标采用某种方式对其进行修改。

在此示例中,我们使用的是 带有起始资源的第三人称模板创建的项目中的蓝图

  1. 可随意放置,只是放置后将这些资源方便找到。

  2. 按下 F 时,我们将尝试定位场景中的 Actor。

  3. 顾名思义,此操作将尝试获取指定类的所有 Actor。

  4. 在图表中 右键 并添加一个 Deactivate 节点,然后将火和音频针连接到 Target

    在此,当玩家按下 F 时,我们将获取关卡中喷火效果的所有实例并将其停用。

  5. 单击 编译 按钮,关闭蓝图,然后单击 运行 在编辑器中开始游戏。

您可以通过按下 F 键停用放置在您关卡中的所有喷火实例。

使用此方法,我们可以查找特定类的所有 Actor 并以某种方式对其产生影响,但是,如果您想查找特定类的所有 Actor, 然后在该类中查找某组或特定 Actor(而非该类的所有 Actor)并进行修改,则应如何操作?下一节将向您介绍一些方法,您可以使用这些方法对结果数组过滤,并只获取所需的 Actor,而非所有 Actor。

在上一节中,我们了解到使用 Get All Actors of Class 节点可生成指定类的 Actor 数组。本节将介绍如何根据不同标准筛选阵列结果,以从阵列中获取特定 Actor 或单个 Actor。

方法之一是在 Actor 上使用 Tags,例如:

  1. 从上一节中的示例继续,在您的关卡中选择一种喷火效果。

  2. 0 字段中,为此标签输入一些文本,例如 Target

  3. 此时,我们将“获得”标签,且索引为 0(上述步骤中将其设置为 Target)。

  4. 在图表中 右键 并添加 Branch 节点。

  5. 请注意,收集指定类的所有 Actor 并将其放置在阵列中后,我们应查看每个 Actor 以检查其是否具有指定标签,只有当 Actor 具有指定标签时,我们才可停用它。

以下是筛选结果的另一个示例:

在以上示例中,我们获取了 Emitter 类的所有 Actor,而非特定的蓝图类,这可在您关卡中具有一些喷射器(如烟、火、风、雨和雾等)且您想全部关闭它们时使用。 我们将 CastingEmitter 对象,然后检查该喷射器是否激活,若是,则停用它。

此时,我们将获取关卡中 TriggerBox 类的所有 Actor 并禁用在其上发生碰撞(关闭关卡中的所有触发器)。我们不必 Cast To TriggerBox, 因为我们要访问的是 TriggerBox Actor 本身而非 TriggerBox 的组件。当您想要访问构成 Actor 的组件时,则需使用

我要回帖

更多关于 ue4关卡导出到其他工程 的文章