【发布时间】:2019-10-25 12:49:28
【问题描述】:
我正在尝试使粒子(使用 SKEmitterNode 实现)符合游戏中的时间倒带功能。我怎样才能做到这一点?
从文档看来,访问单个粒子似乎不是一种可能的解决方案,唯一可能有用的属性是 particleAction。但是,我仍然不知道如何使用单个操作来实现这一目标。
如果这不可行,我认为有必要从头开始为游戏实现一个更简单的动画版本。对此的任何建议也将不胜感激。
【问题讨论】:
-
您希望粒子突然反转方向然后消失在最初出现的位置吗?我很确定在发射器框架内没有直接的方法。不过有几个想法: 1. 如果您可以将效果编写为具有单个纹理或几个纹理的 SKShader,那么您可以拥有一个“反向”着色器来向后运行(需要一些技巧来有效地倒带 u_time,但我知道该怎么做)。 2. 也许您可以使用 SKView 的纹理(来自:)从发射器获取帧,然后使用这些纹理反向设置动画。
-
@bg2b 感谢您的评论!第一种方法看起来很有趣,但是(如果我错了,请纠正我)需要为每个不同的粒子实现不同的着色器,这将是一个可扩展性问题。现在,对于第二个建议,它似乎很有希望,我会在有时间进一步试验时报告!
-
我的意思是只有一个精灵(或一些小数字),加上一个通过引用 u_time 为其设置动画的自定义着色器。我们为正在开发的游戏提供了类似的东西,其中一艘船以一种扭曲和收缩的效果跳到超空间,然后以一种使用基本相同的着色器但有效地使用 u_time 的逆向效果弹出它反向运行。你会有一个精灵,它的纹理有一堆“粒子”,着色器基本上会代替发射器节点。
标签: swift sprite-kit skemitternode