本文是对视频(以下)的一次图文总结,为的是看看自己能否理清逻辑并且加深印象。
虚幻引擎4-UE4-用蓝图制作装备的拾取与丢弃-教你做游戏
功能:提示——捡起——丢弃
逻辑:提示(略)专注于“捡起”与“丢弃”的蓝图通信。
由于人物要能捡起武器,实质上就是在人物骨架的插槽上插上物体
武器蓝图:建立父蓝图,创建三个变量:插槽编号(整数)、武器编号(整数)、静态网格体(为空)
人物蓝图:weapon_index_to_equip(已经装备的武器编号)equip_enable(布尔)、weapon_room(按编号可以进行索引的武器库ACTOR类型(类应用、数组)),pick now(当前正在捡取的)、socket:丢弃的武器属于哪个槽位。
并且添加组件:静态网格,数量自定,并将其根据需要选择需要插入的插槽类型。
基础逻辑:创建武器库(蓝图库)——在父蓝图上右键创建子蓝图。
添加武器的静态网格,并对三个变量按需要设置,通常静态网格体变量与添加的静态网格相同。插槽编号与该武器编号也相同
示例
之后在人物蓝图中编写捡起和丢弃程序。
捡起,首先要确定是否可以捡起(用到了pick now)
然后将其转化为武器父蓝图,获得所有变量。并用equip_enable数组布尔对其进行判断该插槽位置上是否有武器。(根据插槽编号查找布尔)
该布尔数组默认为false——所有插槽上均没有武器
进行捡起操作:现实世界中我们捡起在一开始手中是没有物品的,但在这个逻辑中,我们确定了哪些地方能拾取物品,并先行添加组件但是没有添加资源,属于“空”的静态网格。当触发“捡起”时其实是向已经添加的空的静态网格组件填充资源。
由于人物蓝图中空的组件不止一个,我们就需要“选择”通过“插槽编号”来选择插在该插槽上的武器。如果要像图中一样有顺序,那得——(蓝图类中插槽编号=武器编号)
现在武器已经可以通过触发事件拿在对应的插槽上了,接下来的节点其实是为了丢弃武器做的准备。
拖拽出数组变量“weapon_index_to_equip”连接到“设置阵列元素”其目的是为玩家装备的武器编号。而weapon_index_to_equip数组存储的就是装备的武器编号。
根据插槽编号为编号以武器编号设定对应的值。
既然已经完成了捡起以及存储的功能,就是些细节上的修饰——既然捡起了物品就要把地上的销毁掉,同时又要将equip_index里对应槽位的布尔设置为TRUE以传达已经有武器了的信息。最后将“picknow”设为空。
接下来就是丢弃:
丢弃的逻辑在现实世界中是随手一扔,但在该逻辑中,是将手中的静态网格提重新设置为空资源,并且用附加在丢弃事件上的变量“socket”来传达槽位。
此时丢弃的工作已经完成一半,接下来就是将丢弃的物品重新生成,这不像现实世界中一丢了事,是需要通过“从类中生成actor”来完成,但在之前,必须找到要生成哪个actor。我们丢弃武器,是将已经装备的武器丢弃,所以要用到weapon_index_to_equip数组来查找武器编号然后用武器编号来查找武器。就要用到weapon_romm
Weapon_room数组多少没有限制,按需要添加元素。
在这里不能将元素值设为0,这里的值应该在默认的时候就已经设置好,且按需要或槽位与我们的武器子蓝图一一对应
weapon_index_to_equip也类似
这里可以为空因为需要被赋值。
通过两个变量来查找需要生成的actor
并且将该槽位设为FALSE传递空的信息