最近迷上了虚幻4.于是从商城买了个看起来挺完整的蓝图系统:
https://www.unrealengine.com/marketplace/zh-CN/item/704181b563144ed5b5ef2a4f5dd0b596
以此来作为学习(借鉴)入门。本文算是记录学习过程的一个daily task record.
——————————分割线——————————
由于该项目的系统完成度已经相当ok了,因此我给自己定的第一个任务是在此基础上进行扩展。换句话说,先把所有系统都自定义一波再说。
万事开头先备份。
备份完了后呢,task1:新增/自定义武器。
按照作者给的说明,第一步,创建项目对象的蓝图。
我想新增一把太刀式的武器,单手使用,效果拔群。因此,我找到了项目下的Item_MeleeWeapon并观察之。
有四个接口,并且有是否是双手武器/武器类型/描述/图标等等的属性。
根据作者说明,我们可以直接创建该类的一个子类蓝图,并移至同目录的Instances下。
正确写法yamato
自定义其属性:
红框里面的不要设置成其他type,否则会出现bug(装备不上)
其中Display下面的Displayed Item应该是找不到DI_yanmoto这一项的。当然这个变量暂时不是什么重要的部分,不影响到测试,稍后再说;
备注说明:
Black Value:只装备此武器的情况下格挡所吸收伤害的百分比。50的话意味着格挡只能挡掉50%的伤害;
Two Handed:装备此武器后还能不能装第二把。
IsStackable:是否可叠加(即使相同的武器,强化程度也不一定相同,因此一般都设置为不可叠加)
IsDroppable:是否可扔
IsConsumable:是否可卖
好了,现在已经可以正常添加该物品进入物品栏了。但是,还不能正常使用,因为我们还需要设定一个可视化蓝图以使该武器可见可用。
第二步:找到DisplayedItem,
图就懒得截了。其中关键点有二:
1,对象是应用于人物模型本身(铠甲?头盔?之类的)还是应用于手部(武器)?
2,导入的静态网络物体(SM)是否具有socket?
第一个问题好说,设置一个DisplayedItem的子类蓝图并扔到同目录的Instances下并按需修改相关的对象即可:
第四步不是必须的,这是 “当敌人持有该武器并被击杀后武器是否会消失” 的控制tag。
然后:
备注:Hand Attachment Socket:角色战斗中挥舞武器的动画类型;
Attachment Socket:角色非战斗状态下(行走、跑步、跳跃等)武器的动画类型。
关于第二个socket的问题,首先我们要找到网络物体对应的原始文件(一般格式为SM_xxxxx):
按照https://api.unrealengine.com/CHN/Engine/Content/Types/StaticMeshes/HowTo/Sockets/index.html的方法设置socket如下:
备注:socket的意义在于伤害判定的与否/距离大小,换句话说,如果没有设置这一步,那么测试的时候就会发现即使做出了挥舞武器砍人的动作,但是并不会有伤害判定。
然后你可以回到前面提到的Displayed Item中,将其修改成DI_yanmoto啦~
OK,来测试!
第一步:将其添加到PickupActor中;
第二步:测试能否正常拾取;
第三步:打开背包,测试能否正常装备/丢掉/丢掉后是否消失;
第四步:砍人,测试是否有伤害/伤害判定范围是否符合预期等等。
ojbk~至此就成功地定义了一把新武器啦~
撒花~