我正在创建一个基于 NDC 的特效系统,我通过 NDC 在场景中的不同位置 Spawn 了 10 簇粒子,这些粒子都能很好的播放,现在我需要更新其中一簇的整体位置(实现类似将粒子组件挂载到某个 Actor 下面,然后移动 Actor 的效果)。
我应该怎么做?
我正在创建一个基于 NDC 的特效系统,我通过 NDC 在场景中的不同位置 Spawn 了 10 簇粒子,这些粒子都能很好的播放,现在我需要更新其中一簇的整体位置(实现类似将粒子组件挂载到某个 Actor 下面,然后移动 Actor 的效果)。
我应该怎么做?
您好,
这一簇粒子是要在particle update时整体移动, 而不是跟随某个actor发射对吧?
理论上是可以在data channel里加一个int属性, 标记一下每一簇粒子, 再在移动粒子的Niagara Module里加一个if条件, 只移动对应的那一簇.
但如果这一簇粒子和其他粒子的更新逻辑差很远, 还是建议单独发射一个system, 不再合并到data channel里. 而且如果用的是island类型的data channel, 会按网格划分成多个system发射, 每个system的bound固定, 如果这簇粒子移动的偏离发射位置过远, 可能会超出bound, 造成剔除的错误.
您好,
因为新发布的5.7对Niagara data channel有一些改进, 我更新一下这个问题:
5.7加入了一种Data channel的类型: Niagara Data Channel Gameplay Burst(如下图), 和island类型类似, 但针对多处burst类型的特效做了一定的优化, 比如支持override发射的system类型, 支持挂载到某个component上.
挂到某个component上的数据不再按空间划分, 一个component对应一个system, system的bound根据component bound计算, 如果发射的system是local space的, 可跟随component移动.
[Image Removed]针对你的需求, 可以用这种新的data channel类型, attachment seetings里可以先不添加需要挂载的component类型, 只在你需要attach的对象蓝图里勾选 force attach to owning component.[Image Removed]