UE4(虚幻4)基础:蓝图初识--开关门(四)拾取钥匙打开门
拾取钥匙打开门:玩家通过寻找钥匙,通过钥匙来控制门的打开关闭,类似解密;
1.创建蓝图类和模型:
创建的方法如我的上一篇文章: 键盘控制门 <--戳这里
如果你看过我之前的几篇关于开关门的文章,就很容易了,这里我就不多说了;
其他此类文章 <--
2.处理蓝图,事件图表
和键盘控制门不同的是,键盘控制门是当玩家靠近时按下E键就发生相应的事件,而钥匙开关门是
1.玩家寻找钥匙
2.靠近门(进入盒体触发器区域)
3.按下E键
所以两者的不同之处就是先要寻找钥匙,不然门不会开
有编程基础的人可能一下子就会想到可以用一个bool变量来控制,1表示可以开门,0表示不能开门,当找到钥匙的时候就将这个bool变量置为1,默认情况下为0;
那我们在蓝图中实现:
1.门蓝图类:
保留之前”键盘控制门“的所有逻辑:
新增:
在左侧找到“变量”,点击+,添加bool变量,点击新建的变量可以在右侧修改变量类型及默认值
连接:
其中分支相当于是一个if,Condition是用于判断的条件
逻辑:按下E键,判断bool变量“是否开门”的值,如果为1走True执行开门,如果为0走False打印提示字符串
门蓝图类的总连接图:
编译,保存
2.钥匙蓝图类
点击蓝图,选择新建空白蓝图类,选择第一个Actor,然后保存路径,命名,完成后就会生成在的路径下
双击此蓝图类
点击左上角添加组件,选择common下的静态网格体组件,起名为key,点击该组件,在右侧可以添加网格体和材质
(你也可以去网上下载一个钥匙模型,我这里就用正方体代替了)
在左侧再次点击添加组件,搜索Sphere(球体触发器),选择Sphere Collision,点击添加的Sphere,调整大小,意义是玩家在进入该触发器区域内时才可以拾取钥匙
点击Sphere,在右侧滑倒最下面,添加事件中的开始重叠和结束重叠(进入触发器区域和离开触发器区域)
和开门一样,也需要按键拾取,这里假如还是E,原理和门一样,这里就不说了
(我在进入触发器区域的时候加了一个测试提示可以拾取)
Q:剩下的逻辑就是我拾取钥匙之后怎么才能设置刚刚的bool变量(这是两个毫不相干的蓝图类)
A:这时就可以用到 “获取所有Actor的类” (右键搜索)
在Actor Class中找到你自己刚刚建的门的类名
Q:一个场景中可能有很多个门,那我们怎么找到对应的门呢?
A:这里面是用数组存的(从开始),从Out Actors引脚拖拽拉出搜索get,选择工具->数组->get(复制)
因为我们这里只有这一个门,所以是0
最后一步就是拾取完钥匙之后,钥匙就没了,将其销毁
右键搜索“销毁” ,选择“销毁组件(key)”
总连接:
编译,保存
将制作好的钥匙和门拖拽到场景中尝试: