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