UE4 解决Ribbon连线异常

20 篇文章 4 订阅
8 篇文章 7 订阅

教程地址:https://www.bilibili.com/video/BV1fE411b7at
在月神的Niagara基础教程,弹道的制作中,连续开枪会出现连线错乱
在这里插入图片描述
这是版本的问题,我尝试用教程使用的UE4.23版本制作也是不会有这个问题的,在重新开火的时候,粒子会被杀死,重新发射,也就没有这个问题,
在新版本4.25下即时蓝图开火激活勾选了Reset,也不会杀死旧粒子,当然,如果要杀死肯定也是可以的,但我觉得弹道突然消失很奇怪,那一定也有办法让连线正常起来。

为了这个问题,费了好几天了,当然也学到了不少内容
首先,我们可以去绑定(Binding)下找线索
在这里插入图片描述
我们可以通过设置Ribbon ID来控制哪些粒子连成一条线
通过RibbonLinkOrder可以控制连线的顺序
顺序这里不用动,我们只需要设置RibbonID

那怎么设置呢?
这里用到蓝图,在内容浏览器右键-FX-Niagara Module Script,创建蓝图,重命名Set RibbonID
在这里插入图片描述
创建了蓝图,我们需要在发射器中调用它,进入发射器面板,粒子更新模块添加我们的蓝图Set Ribbon
ID,如果找不到的话注意是不是勾选了仅库
在这里插入图片描述
接下来处理蓝图内容。
双击打开蓝图,里面是这样的
在这里插入图片描述
我们要设置RibbonID,所以输出端添加RibbonID
在这里插入图片描述
那要设置什么值给它呢?这个大家要思考一下
当RibbonID一样的时候,Ribbon就会连城一条线,而我们之前连续开枪的不同弹道相互连线也就是因为他们的RibbonID相同,所以都会进行连线。
原理说清楚了,那我们要如何为每条弹道设置不同的RibbonID?
这里我们需要一个变量,每次开枪的时候它都是不同的,最早我想的是获取开枪次数,没次开枪值都是不同的,但没找到相关参数。所以我换个思路,我又想到能不能获取开枪的时间,但也没找到,最后,我利用能找到的参数,NormalizedAge,标准化年龄
在这里插入图片描述
直接把NormalizedAge连过去是不行的,因为两个属性的数据类型不同,年龄是浮点型,而RibbonID是NiagaraID类型。(这里不知道的可以在属性上稍作停顿,会有提示信息)
在这里插入图片描述
为了连接数据,我们需要对数据做处理,右键输入niagaraID,注意看下图,中断列表和创建列表都有一个NiagaraID,这里的不同你可以都点出来看下就清楚了,就是转接口公母的区别,是niagaraID转成其它数据,还是其他数据转成NiagaraID
在这里插入图片描述
这里我们要转成NiagaraID,所以用创建下的NiagaraID,把数据连接上
在这里插入图片描述
现在你尝试开枪,会发现还是不管用,这是因为什么,是因为我们得到的NormalizedAge始终是一个0-1的数,我猜测它只认整数,所以对结果乘了1000,并取整,结果真是这样,并且把取整函数去掉结果也是没问题的
在这里插入图片描述
现在你在尝试连续开枪,每次的弹道就不会相互连接了
在这里插入图片描述

数据验证

这里另外提一点,如果你尝试了结果并不对,那你是不是很困惑,不知道问题出在哪里了,

这里我推荐把属性值显示出来
比如我们要验证每条弹道的RibbonID值是不同的,我们就把这个属性显示出来
像这样,你可以知道原来每条弹道的值还是一样的,那肯定就是数据没传过去或者连接错了
在这里插入图片描述

那要怎么把属性显示出来?这个在前面文章有说过,
我们使用Sprite显示模式,贴图上做文章,把属性值贴在材质上显示出来
这里我用了颜色属性,把NiagaraID值赋给颜色红通道,然后在材质上把红通道的数值显示出来
在这里插入图片描述
可以看到,我再给NiagaraID值的同时,也把值传给了红通道
在这里插入图片描述
在这里插入图片描述

优化

时间过了一周,当我看完整个教程重新复习这个案例的时候,有了更好一点的解决方案
我们之前的setRibbonID是添加在粒子更新上的,也就是每帧的RiboonID值都是在更新的,而如果把setRibbonID添加在粒子生成模块只会去生成时的值,后面不会再更新,但是由于NormalizedAge是随粒子出生到死亡映射值为0-1,这有什么问题,问题在于粒子刚出生时NormalizedAge值一定为0,如果值不更新,每个粒子的RibbonID就都为0,都会连线。
那这次发现了系统模块下的Age,每次生成粒子的时间不同ID就不同,这是我们更加合适的
在这里插入图片描述
而处理系统Age,引擎模块下有个Time也能实现同样的结果

在这里插入图片描述
在这里插入图片描述
这样优化的好处是RibbonID是在粒子生成模块而不是粒子更新模块,ID只计算一次而不用没帧更新
在这里插入图片描述

如有问题请再联系我

乾杯
志伟

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在UE4.27的Niagara中制作拖尾,可以按照以下步骤操作: 1. 创建一个新的Niagara System,将其命名为“Ribbon”。 2. 在Niagara System中添加一个Emitter,并将其命名为“RibbonEmitter”。 3. 在RibbonEmitter的属性面板中,将Emitter Type设置为“Ribbon”。 4. 在RibbonEmitter的属性面板中,设置“Spawn Rate”为0,并将“Lifetime”设置为足够长的时间,以便拖尾效果可以持续存在。 5. 在RibbonEmitter的属性面板中,打开“Ribbon”选项卡,并设置“Max Ribbon Elements”为足够大的值。 6. 在RibbonEmitter的属性面板中,打开“Rendering”选项卡,并将“Render Mode”设置为“Stretched Ribbon”。 7. 在RibbonEmitter的属性面板中,设置“Sprite Sheet”为包含拖尾贴图的材质。 8. 在RibbonEmitter的属性面板中,将“Renderer Spawn Rate”设置为适当的值,以控制拖尾效果的密度。 9. 在RibbonEmitter的属性面板中,设置“Spawn Velocity Low”和“Spawn Velocity High”为适当的值,以控制拖尾效果的速度。 10. 在RibbonEmitter的属性面板中,设置“Spawn Normalized Age Low”和“Spawn Normalized Age High”为适当的值,以控制拖尾效果的长度。 11. 在RibbonEmitter的属性面板中,打开“Simulation”选项卡,并将“Simulation Target”设置为“Particles Only”。 12. 在RibbonEmitter的属性面板中,设置“Simulation Speed”为适当的值,以控制拖尾效果的流动速度。 13. 在RibbonEmitter的属性面板中,设置“Sort Mode”为“View Depth”,以确保拖尾效果正确地与场景中的物体进行排序。 14. 将RibbonEmitter添加到Niagara System中,并将其连接到“Update”模块。 15. 在场景中放置一个Niagara Actor,并将其设置为使用刚刚创建的Niagara System。 16. 调整Niagara Actor的位置和旋转,以便拖尾效果出现在所需的位置,并测试效果。 以上是制作Niagara Ribbon拖尾效果的大致步骤,具体的细节可以根据实际需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值