上一节中我们讨论了用蓝图来控制开关门,虽然可以实现效果,但是我们试想一下,如果在一个游戏关卡中,在一个迷宫如果中有成千上万门,而且门的模型不完全一样,我们又改怎么办,我们得创建或者复制成千上万的开关门,这几乎是不可能完成的任务。聪明的你一定想到:把门封装成一个类,那么我们就能重复使用。下面我就用蓝图类Actor来创建开关门,并使用鼠标和键盘控制开关门。
先看下效果
1.在内容浏览器空白地方点击鼠标右键,选中蓝图类
弹出的窗口中选择“Actor”
修改名称为:“Door_BP”
2.添加组件
(1).添加门框:
在内容浏览器中双击Door_BP,弹出视口,在视口中点击“添加组件”,然后选择“静态网格体组件”
修改名称为:DoorFrame,然后在右边的"细节"面板中,点击静态网格体,在搜索中输入:doorFrame,选中SM_DoorFrame,生成门框
(2).添加门:
用同样的方法:在添加组件中选中DoorFrame,然后在右边的"细节"面板中,点击静态网格体,在搜索中输入:Door,选中SM_Door,生成门
(3).添加盒体碰撞:
点击"添加组件",在搜索组件栏中输入box,选择Box Collision
调整盒体碰撞的大小和位置,使其包裹住门,注意Box和Door要在同层级
(4).为盒子碰撞添加事件
在左边组件栏中选中"Box",然后在右边的细节面板中拉到最底层的”事件"中,分别选择“组件开始重叠时”,“组件结束重叠时”
(5)添加时间轴
在"事件图表"视口中,单击鼠标右键弹出窗口,在窗口搜索栏中输入“时间轴”,然后选择“添加时间轴”
(5)设置时间轴属性
双击时间轴,弹出时间轴模板窗口,然后点击"f+“图标
(6)添加2个关键帧
点击鼠标右键弹出小窗口,选择“添加关键帧到CurveFloat_0”
设置第0关键帧,帧长度设置为1.5,时间为0.0,值为0.0
点击鼠标右键弹出小窗口,选择“添加关键帧到CurveFloat_0”,曲线中生成第二个点,点击第二个点,设置时间为:1.5,值85.0
其中85.0是门开合的角度
鼠标右键点击第一个点,勾选"自动”,时时间曲线平滑
(7).设置门事件
在添加组件视口中,把“Door”拖入到事件图表中
在door对象上添加相对旋转事件,用鼠标左键从Door右边的蓝色圆圈,拖拽出一条线弹出窗口,然后再搜索栏中输入“setrel”,选择设置相对位置旋转
在设置”相对旋转”窗口,然后鼠标右键选中“New Rotation”->“分割结构体引脚”
弹出“New Rotation Y (Pitch)” 和"New Rotation Z(Yaw)"
(8)连接所有组件的事件
注意:这里门要是设置相对旋转,
1.如果设置成本地旋转就会发现门一直在转
2.如果设置Actor旋转,
3.如果设置场景旋转(set World rotatopm) 是整个门包括门框都在旋转
1.加入gate节点
鼠标右键弹出窗口,在搜索栏输入"gate",选择Gate
2.加入键盘E
鼠标右键弹出窗口,搜索栏输入“键盘 e ”
连接事件
3.加入开启和关闭节点
输入“enable input”
输入 disable input
1.在组件视口选中Door
2.在细节面板选择“点击时”
连接事件
3.运行时显示鼠标
(1)打开世界设置面板
在世界场景设置->游戏模式重载->ThirdPersonGameMode
在玩家控制器类,点击后面的“+”
点击“确定”
在细节面板中,勾选"订点击事件”和"显示鼠标光标"
最后的事件图标蓝图
鼠标点击开关门的效果