【发布时间】:2017-03-18 09:14:10
【问题描述】:
我需要一个粒子发射器效果在 2 个点上重复出现(出于分屏目的),我想知道是否有人遇到过这样做的方法。我的目标是让它在 iOS 10 上运行。这是我到目前为止所尝试的。
- 将
targetNode分配给SKNode,然后每帧复制SKNode:targetNode在我的iOS 10 中不起作用。 - 将粒子发射器分配给
SKNode,并使用view.textureFromNode制作纹理以复制每一帧:需要1/120 帧,对我来说太慢了。 - 将自定义操作分配给将节点复制到另一个的粒子节点
SKNode:操作将不会在 iOS 10 上运行 - 复制现有粒子节点以希望种子不是随机的:种子是随机的
- 尝试在更新时复制粒子发射器:粒子仅在原点生成
- 试过 SKReferenceNode :只是发射器的一个副本,可以自己运行
真正发射我剩下的唯一选择是编写我自己的粒子发射器,我试图避免这种情况,所以我想知道是否有其他人遇到这个问题并且知道实现预期效果的解决方案。
我可以做的另一件事是预渲染发射器,但如果我走这条路,这将占用大量纹理内存。
编辑:为了帮助可视化,我画了一张图片,白色边框显示了分屏发生的位置。黑色边框显示场景环绕发生的位置。
截至目前,玩家 1 和玩家 2 都在原始场景中。
玩家 2 向右走,即将击中世界环绕以将他移动到世界的左侧,但他还没有击中它。所以我需要有一个正在发生的场景的副本,以便它在视觉上看起来像一个场景。由于玩家 1 仍在原始场景中,因此原始发射器需要保持原位。玩家 2 将不得不在副本中看到相同的图像,否则一旦他通过该边界,就会发生“故障”效果,并且包裹的错觉现在消失了。
最终结果:
我们刚刚说了 F%%% 它,玩家 1 和玩家 2 将查看不同的发射器节点,我们将在需要时将发射器附加到每个玩家的相机。
【问题讨论】:
-
距离赏金结束还有两天,仍然没有新的答案。我必须说这是出乎意料的。无论如何,如果我由于自动奖励规则而赢得了一半的赏金,我将再次提高赏金(250 分,因为这是我理论上可以获得的)。不过,像@EpicByte 或 0x141e 之类的一些人(我非常尊重并且多次向他们学习)对此发表评论仍然会很好。
-
@Whirlwind,我知道,如果可以的话,我会提供超过 500 个赏金。现在我正在考虑使用
SKVideoNode。我正在测试使用它与将所有粒子节点帧保存在内存中的性能。 -
我也提交了随机播种的请求,为什么 CAEmitterLayer 允许播种,但 SKEmitterNode 不允许播种,这超出了我的范围,哈哈
-
视频节点是一个聪明的主意。它实际上是在动画昂贵时使用的。但不知道是正常工作还是有问题。我见过很少有人抱怨 SKVideoNode 的一些问题。但如果它有效,那为什么不呢。
-
@RonMyschuk 传入的“当前时间”在不同视图之间的更新中是一致的。您需要捕获此值并将其存储在变量中。下次调用更新检查此值,如果存储当前时间 = 更新当前时间,则将其标记为 false 并返回。对所有更新调用执行此操作。请注意,这会在很多方面与 SKPhysics 混淆,因为它被调用了两次,我还没有找到一种优雅的方式来解决这个问题
标签: swift sprite-kit skemitternode