正文:
本章将使用蓝图,首先实现自动门功能,图比较多,如果懂,可以直接跳到最后查看最终蓝图
1.前面创建的材质我已经放到了文件夹中,并创建了新的蓝图文件夹,建议各位,文件夹可以用中文命名,但是内容最好使用英文。
打开新创建的蓝图文件夹,
右键空白处,点击蓝图类
选择第一个Actor就可以了
命名为BP_Door_Auto(蓝图类的命名一般是BP_打头),命名好后打开
如果是这个界面就点击打开完整蓝图
2.在组件一栏中找到并点击添加组件,搜索mesh并选择最下面的StaticMesh(静态网格模型),命名为Door
再次搜索box,添加一个 Boxcollision
点击Door,Ctrl W复制一个出来,命名为DoorFrame
选中Door,在右边的细节面板中找到Static Mesh,下拉菜单,搜索door,点击SM_Door
对另一个另一个mesh进行同样的操作,选择SM_DoorFrame
在视口中可以看到两个模型,调整两个物体到合适的位置,差不多就行了
调整box大小,让box包裹住门并向两边有一定的延伸
3.准备工作已经做完了,马上使用蓝图对其进行控制
首先切换到事件图表
首先选中box(点击一下)
在中间空白处右键如图点击“添加On Component Begin Overlap”或者在细节面板事件中点击加号直接添加,也要选中box(当有物体进入这个体积的时候就会触发后续事件)
同样的操作再添加一个“添加On component End Overlap”(相反的,当物体离开这个范围后执行),你会得到如下图的两个模块
4.右键空白处,搜索timeline,点击添加时间轴
5.双击时间轴,添加一条Float型变化曲线
首先设置长度为2,这个是开门时间的长度
右键插入两个关键帧,也可以按住Shift左键点击添加,点击对应点,调整两个点的时间和值第一个为0,0,第二个为2,1
返回事件图表,按图连接(拖拽点到另外一个点上)
6.和前面一样的操作,右键点击空白处,搜索lerp,选择Lerp(Rotator),因为这里需要门进行旋转
7.把组件中的Door和DoorFrame拖拽到空白处
拖拽并搜索setrelativerotation
如下图连接
同样搜索Getrelativerotation
搜索Break rotator
从z这个节点引出搜索+,选择浮点型
设置值为90
最后从x引出并搜索makerotator
连接后是这个样子
最后按照图示连接到Lerp上
完整蓝图是这个样子
记得每次完成蓝图后都要编译一下才有用
8.现在回到我们的场景中,把刚才创建的蓝图类拖拽到场景中
9.运行游戏试一下
10.完成,玩家靠近门,离开关门
11.这只是一个超级简单的自动门,BUG是不可避免的,你会发现,不管你在门的哪边,门都是朝一个方向打开,但问题也不大,所有这个问题留到以后再解决。
12角色进不去,是因为门框太小了,调整一下就好了,还有一个问题,角色会穿过门,是因为门没有碰撞体积,也很好解决
回到刚才的蓝图,点击door,在细节中找到Static Mesh,点击加号,就可以在内容浏览器中找到该物体
左键双击内容浏览器中的SM_Door,会弹出该物体的编辑界面,点击菜单栏中的Collision中的simple collision,就可以查看当前物体是否有简单的碰撞体积,很显然,现在是没有的,如图
点击菜单栏上方的碰撞中的Add Box Simplified Collision就可以为当前物体添加一个盒子碰撞体积
保存一下,回到场景,就比较符合逻辑了,这样一个自动门就实现了
总结:
本章主要介绍了蓝图的基本使用方法,创建蓝图,添加组件,设置属性,添加节点,连接,编译,运行
以及简单碰撞的创建,都是些最基础的东西,图比较多,主要是怕有朋友看不懂嘛,后面的话,前面说过的问题就不再说了
下一章将对这个门进行升级,玩家将可以通过按键来控制门的开启和关闭,并且可以在场景中快速控制开启门的方式
另外,希望正在学习的小伙伴不要光顾着学习新的知识,多思考和设计,如果看了我前面的章节的朋友,可以设置把门和场景结合起来,做一个小场景,但建议不要花太多时间哦。