当前位置: 首页 > news >正文

3.UE -蓝图可视化编程 - 云笔记

目录

  • UE介绍
  • 蓝图的介绍
    • 蓝图的命名
    • 蓝图的界面介绍
    • 蓝图节点介绍
  • 对应的数学知识
    • 向量
  • 虚幻的游戏框架
    • 引擎的输入操作
  • 室内场景
  • 资产导入后的检查
  • 开门交互
  • 电梯升降
    • 碰撞盒Box Collision
    • 蓝图接口
  • 蓝图类的继承
  • 后期处理材质
  • 媒体开关处理
  • 灯的开关
  • 交互 模型的更换
  • 交互 材质更换
    • 动态创建材质实例
  • UE4蓝图

UE介绍

UE可以做游戏, 影视, 动画, 舞台, AR. 游戏是一个完整的系统, 所以顺便就能很容易进而的开发影视, 动画, AR等

蓝图的介绍

蓝图的命名

Blueprint

蓝图的界面介绍

菜单 工具栏

类里面添加的叫组件,场景里面添加的叫对象
创建一个蓝图,并双击进去


和世界差不多

蓝图节点介绍

第一个节点Event BeginPlay 当一个Actor出生的时候,会自动调用这个事件

如何进行验证?

打印到屏幕,打印到日志文件,打印到屏幕持续的时间为2s


蓝图写好了记得编译,这样可以看出是否有错误

蓝图中的运行和关卡中运行的区别:
蓝图运行会在玩家出生点的位置,关卡运行是在摄像机的位置

红色的事件节点无法产生两份


如何让蓝图中的模型往前走

如何走?就是调整坐标,节点名字:set actor Location

这个坐标是绝对坐标

这两个节点是设置相对坐标,也就是设置自己的偏移,这两个节点的区别是什么?
Add Actor World Offset: actor相对于自己的世界坐标,设置世界坐标的偏移
Add Actor Loaction Offset: actor相对于自己的模型坐标,设置自己模型坐标的偏移

对其世界坐标进行打印

我们接下来的任务就是让这个模型能移动起来

Event Tick:每一帧都会调用这个Tick

Delta Time表示每帧运行的时间

这样就能让他移动起来了

和下面等效的

能显示出物体的朝向Vector

对应的数学知识

向量



向量和坐标的关系是什么?坐标(位置向量)是向量的一种,向量不一定是坐标,向量是一个更全的概念

我们一般最常用的是坐标(位置向量)

这个表示的就是方向向量

打印的是(1,0,0)表示的是单位向量,所以(x, y, z)不一定表示的是坐标

坐标和坐标相减的几何意义会得到一个新的向量。游戏中的意义: 我面对你的方向

坐标和向量相加的几何意义就是将坐标沿着该向量方向平移向量的长度。游戏中的意义:让我向某个方向进行移动

在关卡蓝图中,将这两个蓝图的坐标相减进行打印看结果



然后我们用相减得到的这个向量(即盒子朝着圆球的方向和距离),用这个向量加上盒子的坐标,就可以将盒子移动到圆球的位置


向量和标量相乘的集合意义:不会改变原有的向量方向,长度进行标量被的缩放
向量和向量相加的集合意义:游戏中意义不大
向量和向量相减的集合意义:游戏中意义不大

用向量进行物体的移动,获取当前的坐标+当前的单位方向向量,这样就能每帧移动1个单位,再乘以2,就表示每帧移动两个单位


现在我想让你走到一定的距离停下
介绍一下这个节点,branch就是if的意思

声明一个变量

变量是什么?
变量的命名:


对这个变量按住ctrl拖进来就是get, 按住alt托进来就是set



这样就能运行200cm就能停下了

现在我想按某个键再进行移动

有一个节点Any Key:按下任何键触发的事件,但是这个节点的事件触发默认只能由player接收或playercontroller接收

但还是有方法使它能接收到(不建议)将这个改为player0

当你实例化多个的时候,你让player0的对象触发这个事件,所以不建议这样用。只有将这个设置到玩家里面才合理,因为你控制的玩家只有一个

这样就实现了按一个键再使物体移动

如果要使物体旋转呢?不能直接对rotation进行运算,需要分割结构体引脚,分为单独的三个字段,然后对这些单独的进行操作

虚幻的游戏框架

框架是什么

GameMode结构:就是游戏的规则,一个游戏是怎么运行的,就写在这里面







当你游戏运行的时候会出现右边的默认的游戏模式


当我不想要wasd来移动,想用其他按键来移动怎么办?

创建一个文件夹




再次运行的时候,游戏模式就改变了,不再是原来的GameModeBase了

这两个有什么区别,pawn本身不提供pawn的移动功能,能被controller接收,除非你自己写出来,而character就能被移动

选择character,将Default Pawn Class给替换掉

运行的时候就被替换了

选择HUD

选择playercontroller


这四个就是后面主要要用到的

接下来就是要让我们设置的character给动起来
进入character蓝图,官方给我们提供了几个组件,第一个是碰撞,第二个是人物的方向,第三个是模型,主要是用于人物的跑动等动作的模型交互

这个是用于各种移动逻辑

我们先讲如何控制,控制无非分为wasd,鼠标的左右键和上下左右移动

引擎的输入操作

打开项目设置

映射分为操作映射和轴映射,
操作映射:是单次执行,比如攻击跳跃,你点一下它执行一下,快速点不行,它是由冷却时间的
轴映射:是循环执行,你按W,则会一直不停的往前跑

代表W S 在MoveForward信号里的影响,Scale建议只设置三个数值0,-1,1 其它的数值你通过运算来调整即可

代表A D 在MoveRight信号的影响

在蓝图中,点击右键,输入你刚才设置的节点,选择第一个,第一个有逻辑线,能驱动后面的节点,第二个没有


这样当你按W的时候,就会触发这个节点了,比如我们打印一个字符串

不点击就输出0,点击W就输出1,S就输出-1

我们能看到一直在打印,说明它具有event Tick的能力,这就是轴映射的特点

如何才能起到移动效果呢?需要用Add Movement Input节点,并且要有Character Movement组件,这个是给我已经实现好了的,直接用即可,否则自己写起来很复杂

连接的意思:输入的值赋值给Scale Value,并且获取到当前前后的方向向量乘以Scale Value 赋值给Add Movement Input节点的Target对象

我们写了前后移动,同理我们再来写左右的逻辑

注意:角色除了上下左右走动,还有相机。

Cine Camera 相机主要是做效果的,我们主要用Camera

如果这个相机在这个胶囊体里面的,我们称这个游戏为第一人称,相机在外面的我们称为第三人称

转动视角:不需要设置Scale数值,往右就是1 左是-1

如果你想鼠标向下移动是抬头向上移动是低头,就可以改变这个数值

鼠标左右 上下移动分别会触发的事件

这样就能上下看了

这样连接之后,我们发现不能上下看,为什么呢?

因为事件触发的对象是Pawn,不是pawn里的相机,因为pawn默认设置,鼠标左右移动会改变模型Yaw,模型的Yaw改变了相机就改变了。鼠标上下移动不会改变模型的Pitch,所以我们上下就没法改变模型的Pitch,相机也就没跟着改变。

所以如果你把Use Pawn Control Rotation的勾给去掉,则你再运行,旋转的就只是相机了,就不会旋转Pawn的Yaw本身了

如何解决呢?我们让pawn对象里的摄像机移动即可

把这个选项给勾上,就能单独的控制pawn里面的相机了。如果没有控制pawn里的Rotation,则会转而控制相机的Rotation

PlayerStart有什么用?
是你玩家出生时的坐标以及朝向,至于之后怎么移动,就是来源你上面蓝图里写的。

室内场景

创建一个新项目


进行项目设置



新建一个基本关卡

然后给他保存起来


调整输入

调整渲染,这个就需要根据你的项目来确定,是调整静态光还是动态光

这些灯光有的是固定的,有的是可移动的,有的是静态的

只要有静态的,就需要吧lumen给关掉

然后把这个给勾选上,这样反射才能清晰

然后我们把框架给设置上

设置一个GameMode

设置一个playerController

设置一个HUD

设置一个character

添加一个Camera组件
相机能够被pawn控制

并设置相机的高度,我们可以看到半高有88,全高就有176,半径有34,直径68

如果出现BADsize这个字样,出生的时候就有可能移动不了

胶囊体运动的最大速度

配置好移动

并测试好

接下来就是导入资源
导资源分为三种情况,第一种拿到手的资源是完整的,有项目图标,有content文件夹

这种是最简单的,可以直接将资源复制过去

打开这个资源项目

选中这些文件,点击迁移

直接迁移到我们的项目里面去

导入之后,再重新打开该项目

也可以直接复制粘贴过来

第二种:没有项目图标,只有一个content

需要先检查一下这些文件的后缀,是否是uassert,是否都导入过虚幻,确定是导入过虚幻的,你才能复制过去

将这些给复制过去

第三种,没有项目图标,没有content文件夹,只有这种

这种情况我们就需要将这些资源手动导入,按照之前的方式

还有一种,导入过虚幻,但是路径不明确,如果材质的资源丢失,说明你放的content下的文件夹的路径不对,这个就需要你来排查,手动把这些资源放到正确的content下的文件夹

解压到…,拖拽所有的文件进content,要么解压到当前文件夹后将这些文件拖进content

资产导入后的检查

资产导入后,检查是否能使用,首先检查Maps或Level

打开关卡蓝图,如果有蓝图,则建议全部删掉


打开窗口里的关卡

这个是为了叠层用的,把下面所有的关卡图全部给叠起来显示。所以我们需要把所有眼睛给打开

有小圆点的,运行的时候是看不到的。

我们要将光转为动态光,所以就需要转为固定加载,这样前面的小圆点就没有了

检查所有的模型对象上的模型和材质是不是空的,如果有一个是空的就不行

都要检查一遍

如果场景里有蓝图对象,我们需要进去编译一次,检查是否有致命的错误

如果要把所有的灯光改成动态光,则需要调整



把所有有关灯光的都改为可移动的

然后把不需要的给删除

比如lightmassimportance静态光照体积,静态的已经不需要了,比如反射球,我们用了自动lumen的反射

然后调整光照体积

把这些给打开

光照贴图不建议删,如果删了可能会导致项目崩溃用不了

如果想删除呢?我们将这个勾上,就不会使用这些图了

构建一次,这些贴图就不在了

然后将这些给删除

这样处理完后就可以了

还有一个补充知识点

如果你不想要那么明显的灯光放光,你可以调 软半径

显示数据

可以看到50帧左右

最开始调之前的静态光,帧率有110左右

将游戏模式给换成自己的游戏模式

之前不是设置过了吗?之前设置的另一个地图关卡的,并不是当前的,并不会在当前的地图关卡生效,所以你需要在这个地图里重新设置一遍。

有人发现运行后不还是能动吗?

这是因为我们用的是官方给你提供了默认的游戏模式

设置好自己的游戏模式后,运行,发现自己不能穿墙,因为我们设置了胶囊体

如果把Panw下的Use Controller Rotation Yaw给去掉

则会出现一种情况,你视角朝前但是按W会往后走。如何解决这种情况?

有一个数据流程, 外设-》controller-》player。玩家输入W,controller接收到,controller改变pawn的rotation,这样我们就直接拿到controller的rotation来自己控制角色的rotation

这样就是用controller的Yaw转换为Forward和Right的Vector,从而来控制角色

添加Arrow1, 坐标调到外面,渲染的隐藏给取消掉

运行的时候就能看到箭头,并且方向是不会变的,因为我们改变的是摄像机

对于角色的控制


如果出现多个player,并且控制的方式相同,我们一般不写到character里面,我们写到控制器里面。
如果出现多个player,并且他们的控制方式不同,我们就可以对于不同的character写不同的控制方式

在控制器里写的控制方法和在角色里写的控制方法会有些许不一样, Add Movement Input(在这里面搜不到,但是可以从 BP_Player的蓝图里面复制过来),但是复制过来一定要改变Target。
Get Player Character 的作用是 能自动的获取到玩家控制的角色对象,蓝图箭头也可以连接Add Movement Input(此时能搜到)

World Direction 怎么写?主要看你Player对象下的Panw属性的Use Controller Rotation Yaw是否勾选

如果勾选了,就可以这么放往上放

节点不一样了,用的是这两个Add Yaw Input 节点和 Add Pitch Input节点,这两个是来控制Controller的,Controller来控制Player。当然你也可以使用Add Contoller yaw Input,但是目标要选对,需要选择玩家当前控制的角色

Controller里面也有这个节点,意思是找到自己的Rotation

Player里的节点的意思是找到目标为Pawn的Controller的Rotation

如果你Player对象下的Panw属性的Use Controller Rotation Yaw没有勾选,就这样连接

开门交互

下面我们来实现开门,创建一个Actor蓝图

然后我们要给这个蓝图添加一个模型,Static Mesh事静态的网格模型组件,如果事Skeletal Mesh就是动态的有骨骼的模型组件

我们给他重命名

我们选择一个模型,这个模型可能是这么旋转的,不符合我们的要求,这种情况是最常见的,需要我们手动来调整

1.用其他软件来改,比如3DMax
2.用虚幻5的功能来改,虚幻5提供了建模的功能

虚幻5如何更改?

选择建模

有的人可能没有这个按钮,需要调一下



当你改门的时候,也会改这个文件

我们需要让门沿着这条线进行旋转

选中门,然后选择编辑

点击Bottom,中心轴就被改到了底部

然后你也可以改到左侧

然后手动调一调,把这个中心轴调到底部

最后点击接受,就会改变中心轴的位置了

就可以在这里进行旋转了

这种门由三个部分组成,门,把手,钉子,我们旋转的时候需要将这些都进行旋转,所以我们要将这三个模型变成一个整体,这就是之前我们在Max要进行解组之后再上传的原因,因为在虚幻里是可以合并的

将这些模型合并之后,会变成一个新的模型文件,所以我们建一个新的文件夹


左边的默认属性可以不用管,然后点击接受

这个时候就出来了一个文件

选中了,发现中心轴又回去了,因为这个轴是其它模型的

所以我们建议先合并,再改中心轴,我们再重新改一次

然后我们把这个模型添加到蓝图里

你也可以添加模型组件后,再加上模型

想让这个们旋转,不建议是直接修改门的世界rotation坐标

这是蓝图里获取世界坐标的方法

而是修改蓝图类的相对坐标系。你调整蓝图类的相对坐标系并不会影响这个模型在世界场景的坐标系,但是仍然是有效果的。所以可以理解为一个是针对整体,一个是针对局部


这个是Set World Location,这是门(模型组件)的坐标系,而Set Actor Location该Actor自身的坐标系

下面来实现门的旋转

这个节点会自动运行,这是一个不用红色节点来运行的方式


第一个字段play的意思,是播放/继续播放的意思,如果暂停了再play,则按暂停的位置继续播放并不是从头开始播放
第二个字段play from Start的意思是从头播放
第三个字段Stop是暂停
第四个字段Reverse 是反向播放
第五个字段Reverse from End 是从结尾处反向播放
最后的两个字段不常用不用管

需要注意一个点: 如果Play到结尾了,继续Play并不会从头开始播放

如果这个时间轴设置为2s, 字段 Update的意思是这2s内每一帧都会执行一次该Update
当你2s时间执行完了之后,Finish字段会自动执行

direction字段是控制正方向移动还是反方向移动

时间轴可以进行编辑,我们双击打开它进行编辑

一般用浮点就足够解决很多事了

将这个进行命名

长度代表有多少秒

你只能编辑灰色区域

对着这个灰色区域右键,添加一个关键帧


就是打点

打点的目的,就是在哪一个时刻输出什么样的值,这个值是给其它节点用的

在2s的时候输出一个90指,可以在外面表示90度

最好不要在这里的值设置为90,因为不通用,我们可以将这个值设置为1,在外面用90乘以这个1就更通用了

Lerp节点表示从A的值开始,一直运行到B的值结束


然后实现一下开门逻辑

运行

也可以不用红色节点来驱动播放

把自动播放和循环选上

运行的时候就能一直循环播放了

如果我们想实现开门关门为一体,就可以这样设置

这种模式可以做 比如恐怖游戏的灯会一闪一闪的

现在我不想这么做,我想按一个键开门,再按一个键关门


这个按键也可以放到角色里,也可以放到控制器里
当你触发按键的时候,Get Actor Of Class 节点就会获取BP Door节点,然后返回这个对象

事件驱动不能再用游戏开始就触发的事件节点了,我们用自定义节点

Flip Flop节点:第一次会走A,第二次会走B,第三次走A。。。

然后在player里触发这个模型的自定义事件

这样就能通过按键来实现开门关门了

电梯升降

下面我们做一个升降电梯,可以开门关门,先做一个模型出来,选中之后添加

我们用Any Key节点,设置1,2,3,4


让事件能接收参数



然后实现电梯的开门关门


然后我们用一个自定义事件来调用这一串


这样就是实现了开关门,但是还是有一点bug,就是能在运行的过程中再次运行。我们应该阻止用户按下

时间轴的Is Playing 当前是否在运行

给两个时间轴命好名字

实现


但是如何调整电梯升降的速率呢

时间轴的Set Play Rate 控制播放速率, 0是暂停,1是正常的播放速度,2是加倍播放速度,这个节点最好是在播放之前设置

实现

还有一个问题:
这里的复用率不高

声明一个对象类型变量,赋值给这个变量


按键事件的InputAction ElevatorKey的Get Key Display Name 能获得到按下键的名字,我们能根据这个名字来设置要去楼层的高度

我们可以看一下按下Q打印的是什么

实现

完成电梯的多个楼层的门是否打开

实例化出多个门

将BP_ElevatorDoor类里的Floor变量公开,让外部能直接访问到

设置该变量的值

调用该事件的时候,将楼层参数给传进去

如果相等才将该楼层的门给打开

碰撞盒Box Collision

现在我们来优化一下开门关门
无论我们距离多远都能开门关门,我们希望靠近门的时候才能开门关门

添加一个组件:Box Collision。下面有一个Capsule就是我们之前提到过的 character蓝图类里自带的胶囊体

不建议这样把Box作为Door的子类,因为这样会导致门旋转的时候Box会跟着一起旋转

调整该Box的检测区域

我们可以从细节面板上看到有哪些事件,这些也是蓝图能给我们提供的事件节点

当你点击的时候,会自动的跳转并创建一个事件过去
Begin Overlap:当你的人和进入到这个Box时候,会触发这个事件
End Overlap:当你的人和离开这个Box时候,会触发这个事件

这样就是实现了当你靠近这个门的时候会自动的开门关门

这种情况现在还有一个问题


实例化多个门的时候,开门时,你不知道会打开哪个门

用碰撞Box就可以解决这个问题,走到哪个门前,哪个门就开门

不仅仅是人进入了这个Box里会触发这个事件,一个模型比如球进入这个Box也会触发这个事件

不仅仅是球会触发,连自己的门模型也会触发,所以如果Box盒子没有包围打开门时的状态,则会出现一种情况,会抖动。因为开门关门时门会触发Box事件


怎么判断哪个物体会触发这个事件呢?
打开门这个模型,打开简单碰撞

只要有绿色的框,就会触发Box事件

人有这个胶囊体的框,所以也会触发这个事件

当触发这个事件的时候,那我怎么区分人和球和其它模型呢?

Get Player Character 能获取到

好,现在我们想让走进哪个门,然后按E,哪个门再开门,如何实现?

方法一:让所有门都执行相同的逻辑


方法二:准确的找到某一个门,再让他执行后面的逻辑

将Other Actor返回的Actor对象转换为BP_Player类型,并将BP_Player对象下的变量Door Actor设置为自己

完整实现

第二种方法的好处就是不用搜索,不会消耗搜索的时间

蓝图接口

让这个门和人进行交互还有一种方法

蓝图接口的作用就是把消息给转换一下

双击

重命名

将这个类型作为参数进行传递

当进入到这个门的时候,调用蓝图接口,并将自己作为参数传进去

关联蓝图接口

此时就会触发Set Player Door事件,并会接收到BP_Door传的参数

蓝图类的继承

一个场景里面不仅仅门可以开关,灯也可以开关,电视也可以开关,我们不能每一个物品都给他写一遍相同的逻辑,所以我们可以用蓝图继承,只需要写一遍,其它物品只需继承它,就有这个功能了,然后不同的部分可以重写一遍即可

创建一个Actor类,并命好名字

然后写通用的逻辑

添加Box,以及触发事件

创建子蓝图类,这个子类里就默认有Box了


点进去看,我们就能看到自动有一个Box了

再添加一个模型

再添加一个蓝图接口

然后需要不同的模型,就添加不同的模型

以下是完整的实现:

基类的实现

触发Overlap的事件,参数为BP_BaseClass类型


基于BP_BaseClass 创建一个子类

后期处理材质

添加一个材质球

叫做后期处理材质,就是边缘会有描边的效果,原理就是把这个形状里的像素全给去了,只留下一个边

这个可以调整,一个是边缘的颜色,另一个是边缘的粗细度

创建材质实例

双击打开,可以看到提供了两个参数,一个是宽度,另一个是颜色

材质球调完之后,如何看到这个材质的效果,放到后期处理体积里

直接将这个材质给拖拽进去

这里勾选上就能显示,勾选上就会显示,但是我们一般不在这里面设置,

我们一般在蓝图里面设置,这样就实现了走到门附近的时候,就会显示边框

媒体开关处理

下面我们来处理媒体电视

准备好一个MP4文件,MP4文件是不能直接导入到虚幻的

虚幻规定:MP4等媒体文件必须要放到Content的Movies目录下

将文件拖拽过来

否则会出现这种情况

也可以这样导入

然后这里再选择

然后重命名

MP4文件播放需要有媒体播放器

勾选上媒体纹理,这个纹理是干什么的呢?模型上只能显示纹理,播放的视频会转换为图片纹理

重命名

然后把图片创建为材质球

重命名

双击打开

将材质球扔上去

我们发现这个纹理反了,是镜像的,怎么给他挪正?

通道0是负责表面的纹理

要么你自己转UV,要么在材质里写

快捷键U,这样设置后连接

然后实现电视的开关

将电视所有模型进行选中,合并


创建一个子类BP_Television

添加电视模型

将地图里的电视替换为你自己的模型

添加一个声音组件


这个位置指定你自己的播放器

声明一个播放器变量

实现播放,Open Source是打开视频源文件并从头播放, Play是播放(必须打开了源文件才能播放),Pause是暂停,Close是关闭源文件

Auto Clear:当源文件被关闭的时候,纹理会被清理掉

当你勾选上Loop,播放到结尾的时候再点击Play会从头开始播放

当周围环境很黑的时候,你播放电视,应该有照射效果

添加一个矩形光源,并且将材质设置为T_Video,这样就会用这个纹理来照亮

自己构建一个黑暗的场景,就可以看到照亮的效果

灯的开关

下面来做个灯的开关

基于BP_BaseClass 创建一个子类BP_Light

选中所有模型进行合并

放在Meshes文件里面

命好名字

然后也可以改变中心点

将BaseMesh设置过来,并调整一下Box的位置

增加一个射灯,并调整射灯的位置

然后设置和场景的射灯一样的参数

然后把场景里的灯给删了

然后编写BP_Light类,时间轴LightAnim是控制灯的渐亮渐暗的,Set Intensity能设置灯的强度

交互 模型的更换

把瓷瓶的模型合并,并设置好中心轴

创建BP_Sculpture子类,实现

在模型编辑器里设置了一次材质,如果你在蓝图里面设置了,默认用的就是蓝图里的通用模型的材质(统一),而不是用模型里设置的材质

你不想要统一你想要一个模型一个材质,你就需要手动设置材质

还有一个弊端,模型不是合并的,你需要换多个模型,一个模型的材质可能不止有一个,可能有10个材质,所以你需要一个一个把材质都给替换。目前在蓝图里没有好的解决方法,只能一个一个设置

材质最好的方式就是把所有模型都给合并,并且给的材质最好是一个,否则就需要一个一个来设置。

交互 材质更换

对这个模型进行合并,更换中心点

创建一个蓝图类,并把这个模型给放进去

替换为自己的蓝图类实例

创建一个自己的材质球

把这个节点转换为参数

用这材质球两个实例出来的材质球,并设置好材质

用这两个实例出来的材质球实现

其一:这种耗资源,因为用了两个实例的材质球,其实我们只需要用一个材质球就可以了,只需要换材质球的贴图就可以了
其二:如果你需要有多个材质,每个材质都需要创建一个对应的材质球,不方便,直接用动态加载就可以了

动态创建材质实例

动态创建一个材质球实例,并且把原来模型上的材质球替换为这个材质球实例

交互的时候只需要更换材质的贴图即可

这两个实例就可以删除了

第二种方法:在创建动态实例的时候就把材质球给设置好

UE4蓝图

可视化编程, 官方都直接用中文写蓝图的文档, 可见蓝图可视化编程的易上手性, 不需要你英语有多好, 不需要你有编程水平, 你就可以拿这个引擎做很多事情, 这也是虚幻引擎很火的原因

现在我想实现编程, 但是不想敲代码只用蓝图的方式来实现.

我们先来介绍一下UE4的界面

1.菜单栏(少用)
2.工具栏(少用)
3.模式(就是官方提供给我们使用的工具)
4.内容浏览器(材质的导入等等, 可以理解为仓库)
5.视口(所有的交互都在这个视口中呈现)
6.世界大纲(和视口进行交互的, 即我视口选中的时候, 这里的选中也会跟着变, 所有物品的列表)
7.细节面板(和视口进行交互的, 即我视口选中的时候, 这里的选中也会跟着变, 当前物品的属性调整)


再来看, 如何让完全不懂代码的美术来实现编程?
刚才在播放的时候, 我们看到了哪些东西?
场景, 动作, 特效, 模型, 攻击, 伤害, 我们说的编程肯定不是编程场景和模型, 这两个都有对应的人去做, 我们要做的是什么呢?

  1. 效果
  2. 角色
  3. AI

角色包括:模型, 动作, 特效, 有专门的模型师, 动作师, 特效师来制作, 即所有美术的方面都有人来做, 而我们需要做的是将上面的资源根据实际情况进行控制, 这种东西叫做机制, 也叫交互.
如人物开火, 会产生后坐力动画, 开火特效, 弹壳蹦飞的特效, 击中物体的弹坑


我们要做成这样应该如何操作呢?
1.添加模型资源
2.可以控制这个角色
3.有交互的逻辑

下面我们来进行操作:


    右键内容浏览器, 选中蓝图类

    选择角色

    起一个名字, 并双击打开这个界面, 进入蓝图的内部

    在布局上面差别不大, 如何添加这个模型?

    选中Mesh

    右侧细节窗口中的Mesh选择你的模型

    对应配套的, 我们需要在场景中看到这个人, 所以就需要有一个摄像机, 当然也需要一个弹簧(配套的), 点击添加组件进行添加
    这个人物这样傻站着, 如何让他摆一个动作呢?

    这里就能添加一个动作

    这样我们就实现了一个资源, 并且能够看见的

    然后把defaultpawn给替换为我们自己的

    我们的第一步添加就做完了


    下面第二步控制

    点击事件图表, 右键, 输入前后移动

    右键, 添加移动输入

    获取GetActorforward

    现在进行播放就能实现前后移动了, 还差一个左右移动和鼠标移动

    这样就能控制上下左右了

    选择摄像机, 并设置使用pawn控制旋转

    这样我们实现了第二步控制


    下面我们来实现交互, 左键开火有一些列对应的事件

    这里选择对应的资源, 这样就实现了开火时的开火动作

    http://www.jsqmd.com/news/1186360/

    相关文章:

  1. TypeScript赋能Node.js:构建类型安全的后端应用实践
  2. 洛雪音乐音源配置终极指南:3分钟快速搭建你的专属音乐库
  3. 欧米茄中国大陆官方售后服务中心|维修地址及官方电话全新通告(2026年7月最新) - 欧米茄中国服务中心
  4. 2026年合肥电大中专秋季招生:分批次录取与报名新规全解析 - 最新资讯
  5. Linux cut命令详解:高效文本处理与数据提取
  6. 动态人才盘点不止提升效率:打造驱动业务扩张的实时人才决策基础设施
  7. 智能体技术架构解析与典型应用场景
  8. 我在CSDN踩过的10个技术坑,第5个让我怀疑人生
  9. 3个步骤轻松下载加密流媒体:N_m3u8DL-RE流媒体下载工具完全指南
  10. beijing_est_institute_2021项目快速入门:5步完成LFS系统基础构建
  11. 2026年北京短视频运营代理怎么选?5家实测对比与获客方案推荐 - 中国品牌企业观察网
  12. TradingAgents-CN终极指南:如何用AI多智能体打造你的专属股票分析平台
  13. 如何3步完成Windows文件夹色彩管理:专业文件整理指南
  14. 2026年四川EVA防水板采购指南:3大场景5家供应商对比 - 资讯快报
  15. 黄金回收八两秤揭秘鞍山正规门店克重核验指南 - 观金堂黄金回收
  16. 2026 海北祁连县黄金回收口碑测评|本地实体门店合规变现全指南 - 铂衡汇黄金珠宝
  17. 现代C++新特性全景解析:从C++11到C++20的核心演进与实战指南
  18. C++与Rust类型安全绑定实战:五大模式与避坑指南
  19. 工业负载控制:TPD2015FN与PIC18F46K80实战解析
  20. 鸣潮自动化助手ok-ww:解放双手,智能挂机战斗的终极解决方案
  21. Mythos门控机制:高阶AI能力的可审计释放实践
  22. Rails资产管道路径遍历漏洞CVE-2018-3760深度剖析与安全实践
  23. 构建跨平台HTTP调试利器:HTTP Toolkit桌面应用深度解析
  24. 四大一线城市腕表维保市场分析:亨得利全国直营体系的技术与服务标准 - 亨得利官方维修中心
  25. 欧米茄中国官方售后服务中心|地址及官方联系电话权威信息通告(2026年7月更新) - 欧米茄服务中心
  26. 2026 安康装修口碑榜单|深耕本土,阔达装饰凭精工与诚信服务收获安康业主一致好评 - 商业先知
  27. Go入门:Go语言注释规范与文档生成
  28. Claude Mythos:AI安全能力跃迁与漏洞自动化利用实战解析
  29. 劳力士中国区官方售后服务网点|最新维修地址及电话权威收录(2026年7月最新) - 劳力士中国服务中心
  30. Citra 3DS模拟器终极指南:免费在电脑上玩任天堂3DS游戏