蓝图篇
目录
蓝图基础逻辑
蓝图可视化编程——开关门互动实现
创建门的蓝图类——Actor和组件的区别、门和轴心点修改
蓝图可视化编程——按键实现开关门
蓝图可视化编程——鼠标点击实现开关门
知识点1:蓝图是可视化编程
知识点2:蓝图是面向对象的编译型可视化编程语言
知识点3:关卡蓝图和蓝图类的区别
关卡蓝图是用于创建游戏中的关卡或场景的工具。它允许游戏开发者在蓝图中创建对象、设置物理属性、添加游戏逻辑等,以构建一个完整的游戏关卡。
蓝图类是用于创建重复使用的代码、函数和算法的工具。它允许游戏开发者在蓝图中创建自定义类、定义函数和变量等,以便在游戏中被多次调用和重复使用。
关卡蓝图和蓝图类的区别在于它们控制的范围和可修改程度不同。关卡蓝图只控制当前关卡中的对象和行为,可以实时修改;而蓝图类定义了游戏对象的所有信息,在游戏过程中不可以修改,但可以在不同的关卡中使用。
知识点4:蓝图数据类型
给小白人一个场景控制权:细节——自身——poss——player 0
在蓝图的内容里,我们主要用到的是侧边栏和中间的视口区域,上半部分的工具栏中就有今天课程的主要内容“蓝图”两个字,单击鼠标左键展开分项,选中关卡蓝图再次单击鼠标左键,进入的这个界面就是关卡蓝图的编辑界面。
在关卡蓝图中单击右键展开节点搜索栏
键入BeginPlay,大小写没关系,选择事件BeginPlay,单击鼠标左键选中
再次右键展开节点搜索栏,键入PrintString,选择背景灰化的PrintString节点
鼠标左键按住BeginPlay节点右侧的白色三角形引脚拉出一条信号线,连接到PrintString节点左侧的白色三角形引脚上
同时将PrintString节点中间的Hello修改为想要在屏幕上打印的话,例如:Hello,蓝图
在虚幻4引擎里程序的实现都是通过节点连线传递信号的方式执行的,我们看到的这两个节点,都有白色的三角形引脚,统称为执行引脚,同时左侧的执行引脚称为输入引脚,右侧的执行引脚称为输出引脚,BeginPlay节点并没有左侧的输入表示他是纯输出节点,它的作用是在按下播放键,也就是游戏开始时释放一个信号到通过信号线连接的下一个节点的输入引脚,使其产生作用,同时下一个节点再执行完本身的功能后会继续沿着连线向下下个节点传递信号,指到信号线终止,则该段逻辑执行完毕。
生活中的感应门是怎么运作的,感应门先是会有个感应装置感应到人的靠近,门自动打开,当人远去,门又会自动关闭,那么游戏中的门也是同理,再ue4中叫做盒体触发器。
现实生活中的感应器——ue4的盒体触发器。
需知名词:关卡蓝图——写一些场景的互动、事件、碰撞
案例1开关门的互动显示
所需:添加新项目——内容包——strarter Content——SM Door
(刚刚添加会穿模,需要添加碰撞,来阻挡角色)
碰撞:打开门的模型。碰撞——添加盒体简化碰撞(添加碰撞后,player0就走不过门了)
调整碰撞大小:快捷键R缩放+拉动大小(碰撞大小即player0碰到门后走不动的范围)
盒体触发器:模式——基本——盒体触发器
(开门的操作即出现在盒体触发器的范围内,绿色边框)
将门修改成可移动:选中门后——变换——可移动
点击盒体触发器——工具栏——蓝图——打开关卡蓝图——右键
点击门——创建门的引用——set actor rotation——z轴修改成85度(告诉系统,让门这个目标围绕y轴进行85度的旋转)
(保存运行后会发现,player0靠近门/盒体触发器 就会打开)
新建时间轴——双击添加浮点型轨迹——右键添加关键帧1(时间0,值0)——添加关键帧(时间2,值85)(值是按照旋转的角度)
右键关键帧1,点击自动,右键关键帧2,点击自动(为了平缓开门的动作)
连接线条
时间轴含义:
当画面中的东西较多的时候,将每一个门都创建一个触发器再编写关卡蓝图,会让工作量变得很大,所以可以创建一个Actor来方便后面的操作。
理解:Actor可以理解为类别
案例1——开关门的互动显示
右键——蓝图类——Actor——新建Door_BP——双击打开(Actor内有很很多组件,就可以理解为人的衣服和帽子裤子)
添加组件1——Skeletal Mesh(静态网格=模型)——取名DoorFrame
Static Mesh——SM_DoorFrame
添加组件2——Skeletal Mesh(静态网格=模型)——取名Door
Static Mesh——SM_Door
添加box Collision(盒体碰撞(盒体触发器))——调整碰撞盒子的大小(将盒体碰撞和门放在同一级,若是没有放在同一级门动的时候触发盒子也会移动,门一旦打开,人在移动后的触发盒子范围内就没有办法关门了)
编写事件图表——单击box——事件——on Component Begin Overlap——on Component End Overlap——时间轴——添加关键帧1(0,0)——添加关键帧2(1.5,75)——长度2——右键自动(在碰撞盒子内on Component Begin Overlap,离开碰撞盒子的范围on Component End Overlap)
设置相对位置的旋转:
SetRelativeRotation:设置相对位置的旋转,相对位置如门和门框的位置是没有变化的,单个组件以自身轴旋转
SetWorldRotation:世界坐标是不会被改变的,坐标永远是0,0,0,单个组件以世界轴的旋转
SetActorRotation:self整个蓝图类旋转,不论有多少组件都旋转
游戏操作中一般都是用键盘开关门
案例——游戏按键e打开门
节点:
1..Enable Input(启用输入)
2.Disable Input(禁用输出)
3.Get Player Controller(获取玩家控制器)
【以上三个组合总而言之就是规定了一个控制角色(Get Player Controller),确定了蓝图可以接受或拒绝操作该角色的玩家从键盘发出的指令:启用输入(Enable Input)、禁用输入(Disable Input),一旦该角色满足了触发条件,就启用输入或者禁用输入,即该角色可以获得或者丧失从键盘(这个案例是,下面那个案例是鼠标,总结总结应该接受从设备输入)输入按键的权利,然后触发后面乱七八糟东西的】
4、E(E按键)
5、Gate(在Open或Close满足时)的前提下然后输入E(Enter)的时候触发事件
6、Flip Flop(不断的翻转,A和B轮流执行,第一次调用执行A,第二次B,第三次A…)
7、SetRelativeRotation(设置相对位置的旋转)
案例——鼠标点击开门
1.添加On Clicked(点击时),点击Door——事件——On Clicked(点击模型后会触发事件)
2.打开世界设置——窗口,世界设置——Game Mode
3.人物靠近后显示鼠标