- P27. 【蓝图】开关门互动实现
- P28. 【蓝图】按键+鼠标点击实现开关门
- P27
- 1. 首先 给门添加碰撞;双击“内容浏览器”中门的模型,进入门的编辑界面
在新界面的菜单栏中,“碰撞——添加盒体简化碰撞”;然后通过缩放按钮把盒体碰撞调整到和门刚刚合适的尺寸(如果每单元缩放尺寸太大,调小缩放尺寸的单元数值)
- 2. 添加盒体触发器(相当于感应装置)
拖拽一个盒体触发器 在门的下方(盒体触发器在左侧“放置actor——基础——盒体触发器”)
- 3. 开关门互动实现
选中门,把门的“细节——移动性”改成“可移动”
选中盒体触发器,在工具栏(编辑场景的上面)选“蓝图——打开关卡蓝图”
我们要为玩家添加两个事件,一个是进入触发器的事件,一个是离开触发器的事件
右键添加这两个事件(一个开始重叠时,一个结束重叠时):
回到之前的编辑器中单击门,然后再去蓝图编辑器中右键,添加一个对门的引用:
从新添加的引用,拖拽出来一个(东西),搜索“set actor rotation”,添加一个“设置Actor旋转”:
把begin的“执行”按钮和设置actor的“执行”按钮相连;再把“设置actor旋转——New Rotation”的 Z值改成一个合适的角度(开门的角度,这里改成了85)(因为开门之后的门是按Z轴转的,所以改Z值):
(此时运行,人物靠近会瞬间开门,非常生硬)
在蓝图编辑器中,右键 搜索“时间轴”,然后点“添加时间轴”
双击点开时间轴,点击编辑界面上方的“f+”(添加浮点型轨道):
然后在界面中右键,添加关键帧;把时间和数值都设置为0(因为门没有旋转时,时间和数值都是0):
然后右键再添加一个关键帧,时间设为2、数值设为85
如果关键帧们的显示不合适(距离过近或过远),可以按下图这两个按钮调整缩放尺寸(这两个按钮在设置时间和值得旁边)(弹幕:直接按“F”键比较方便):
然后右键第一个添加的关键帧,选自动,目的是让门的变化不要那么生硬(由慢变快);蓝色的点我们可以手动调节:
最后,把编辑界面上方的“长度”改为2(和关键帧2的时间一样的时间)(如果超过2,比如是5,那么你要连续开门和关门的时候,必须经过5秒后才能关门,但是开门的动作其实2秒就已经做完了,还要空等3秒;所以长度改为2):
回到事件图表,把begin的执行连到时间轴的“play”,把end的执行连到时间轴的“reverse”(反向播放);时间轴的update连到设置旋转的执行;
右键“设置Actor旋转”的“New Rotation”,选“分割结构体和变量”,然后把时间轴的“新建轨道”和“设置Actor旋转”的“New Rotation Z”连起来(Z是时时变化的了,并不是0和85的突变了):
OK 完成了
- 时间轴各个点的作用:
Play:正向播放时间轴
Play from Start:从时间轴的第一个关键帧播放
Stop:停止
Reverse:反向播放
Reverse from End:从最后一个关键帧开始反向播放
Set New Time:设置新的开始播放时间(自定义的)
Update:每帧每秒的更新(设置作用的对象)
Finished:时间轴跑完了要触发什么
Direction:方向的判定(判定时间轴是正向的还是反向的)(不太清楚)
- P28. 按键+鼠标点击实现开关门
- 1. 创建门的蓝图类(Actor和组件的区别、门的轴心点修改)
右键“内容浏览器”的空白处,选择“蓝图类”;然后在弹出的新界面选择“Actor”
双击打开“内容浏览器”中新建的Actor
在新的界面中,左上角“添加组件——静态网格体组件”;然后在右侧 “细节——静态网格体——静态网格体”中选择“SM_DoorFrame”(添加一个门框;可以搜索)
然后再新建一个门的网格体(和门框的操作一样,添加组件——静态网格体组件,细节——静态网格体——SM_Door)(在组件中,门要放到门框的下一级)
//******插播一点东西
门的坐标轴在远离把手的一侧的边上,所以开关门的动作很好实现(在远离把手的轴上旋转):
但是如果一个我们自己添加的物体,我们想改变它的“基准”坐标轴怎么办
(在刚才添加门和门框的那个界面)“组件——添加组件”,搜索 “场景”,添加“场景组件”:
然后把“StaticMesh” (添加的物体)挪到 “Scene”(场景组件)下一层级
移动物体,使“Scene”到物体的一个角落(你想要把坐标轴改变到的那个点),这时候旋转“Scene”就能对物体进行相应位置的旋转了(蓝图中直接对这个Scene进行编辑?)
不推荐这么做,推荐直接在建模软件(如3dmax)中进行修改
//******插播结束
继续上面的,添加门之后,“添加组件”,搜索box,添加“Box Collision”,适当调整盒子的大小(box collision添加到门框的下一级、和门同一级;如果在门的下级,那么门旋转时,box collision 也会跟着转,不符合实际情况)
切换到“事件图表”
单击左侧添加的“Box”,然后在右侧“细节——事件”,添加“组件开始重叠时”和“组件结束重叠时”
在“事件图表”的编辑界面中 右键“添加时间轴”;然后 双击 新添加的时间轴,添加两个关键帧、改长度、右键第一个关键帧 插值改成自动...(最后点一下上面左侧的“编译”按钮)
- 2. 相对位置和世界位置(设置actor旋转、设置世界旋转、设置相对旋转的区别)
Door的引用直接用鼠标从左侧拉出来:
拉出来上图的蓝圈,添加“设置相对旋转”(为什么设相对旋转不设绝对的旋转:因为我们要做的是一类门,不同的门的朝向是不同的,如果门从关到开都转90度,有的门可能是从0~90,有的可能是从-45~45,所以设相对旋转)
时间轴的“Update”的执行连接“设置相对旋转”左侧的执行(如果连错线了,双击线 然后delete)
之后再连剩下的一些线,和P27差不多;连完后如图:(连完后点一下左上角的编译)
然后就可以把“内容浏览器”中我们新建的“门(蓝图类)”拖拽到 视口界面了
- 3. 键盘 E 键实现开关门
(人物走进触发盒子,不直接执行开关门的操作;而是判断)
在“事件图表”中添加“Gate”:
“事件图表”中添加“E”键(搜索“键盘”,下拉找到“E”),长这样:
“事件图表”添加“启用输入”、“禁用输入”、“获取玩家控制器”、“FlipFlop”
连完线的“事件图表”:
FlipFlop:触发器;执行第一次的时候,走A;执行第二次的时候,走B;第三次走A...
- 4. 鼠标点击实现开关门
在 蓝图编辑器中,点击一次左侧“组件”中的“Door”,右侧“细节——事件——点击时”,添加这个“点击时”
用“点击时”替换掉“E键”
回到有“视口界面”的那个界面,右下角“世界场景设置——游戏模式”,“游戏模式重载”选“ThirdPersonGameMode”,“玩家控制器类”点右边的“+”号,创建完成之后会自动打开一个新窗口
新界面右侧“细节——鼠标接口——启动电击事件”勾选(“显示鼠标光标”也勾选上),完成之后点左上角编译。然后就完成了
如果想 人物靠近门才会出现鼠标,人物远离门就隐藏鼠标;首先在“事件图表”中添加“设置 Show Mouse Cursor”(搜索“set show mouse”就会出现,但是要把“情境关联”取消勾选)
连完线之后:
记得要把添加的新的玩家控制器类的“鼠标接口——显示鼠标光标”取消勾选
上面这一切记得编译
OK完成了
标签:蓝图,旋转,开关门,添加,时间轴,组件,UE4,右键 From: https://www.cnblogs.com/wjjgame/p/16809821.html