swift – 在Sprite Kit中复制粒子发射器效果

swift – 在Sprite Kit中复制粒子发射器效果,第1张

概述我需要有一个粒子发射器的效果在2个地方出现重复(对于分屏),我想知道有没有人遇到这样做的方式。我的目标是让这个运行在iOS 10上。这是我迄今为止所尝试的。 >将targetNode分配给SKNode,然后复制每个框架的SKNode:targetNode在iOS 10中不起作用。 >将粒子发射器分配给SKNode,并使用view.textureFromNode使纹理复制每帧:占用1/10秒的帧,对 我需要有一个粒子发射器的效果在2个地方出现重复(对于分屏),我想知道有没有人遇到这样做的方式。我的目标是让这个运行在iOS 10上。这是我迄今为止所尝试的。

>将targetNode分配给SKNode,然后复制每个框架的SKNode:targetNode在iOS 10中不起作用。
>将粒子发射器分配给SKNode,并使用vIEw.textureFromNode使纹理复制每帧:占用1/10秒的帧,对我来说太慢了。
>将自定义 *** 作分配给将节点复制到另一个SKNode的粒子节点: *** 作将不会在iOS 10上运行
>复制现有的粒子节点,希望种子不是随机的:种子是随机的
>尝试在更新时复制粒子发射器:粒子刚刚产生在原点
>尝试SKReferenceNode:只是一个发射器的副本,它自己运行

剩下的唯一选择是写我自己的粒子发射器,我想避免,所以我想知道有没有人有这个问题,知道一个解决方案来达到预期的效果。

我可以做的另一件事是预先投射发射器,但如果我走这条路线,这将占用大量纹理内存。

编辑:为了帮助可视化,我画了一张照片,白色的边框显示了分屏显示的位置。黑色边框显示场景环绕的位置。

截至目前,玩家1和玩家2都在原始场景。

球员2正在右转,即将打入世界之路,将他移动到世界的左手边,但他还没有打进来。所以我需要一个场景的副本,使它在视觉上看起来像一个场景。由于玩家1仍然在原始场景,原始的发射器需要留在原地。玩家2将不得不在副本中看到相同的图像,否则一旦他通过该边框,将会发生“毛刺”效应,并且包装的错觉现在已经消失了。

最后结果:

我们刚刚说F %%%它,播放器1和播放器2将会看到不同的发射器节点,我们将在需要时将发射器附加到每个播放器的相机。

这只是工作(我猜想是这样),但我不知道多少是表演者,或者它如何适合你的需要和你当前的游戏。无论如何,也许它可以帮助你在某些方面。首先,在你的GameVIEwController …拆分屏幕:)
#import "GameVIEwController.h"#import "GameScene.h"@implementation GameVIEwController- (voID)vIEwDIDLoad{    [super vIEwDIDLoad];    // Configure the vIEw.    SKVIEw * leftSKVIEw = (SKVIEw *)self.leftScene;    leftSKVIEw.ignoresSiblingOrder = YES;    leftSKVIEw.showsFPS = YES;    leftSKVIEw.showsNodeCount = YES;    SKVIEw * rightSKVIEw = (SKVIEw *)self.rightScene;    rightSKVIEw.ignoresSiblingOrder = YES;    rightSKVIEw.showsFPS = YES;    rightSKVIEw.showsNodeCount = YES;    // Create and configure the scene.    GameScene *scene = [GameScene nodeWithfilenamed:@"GameScene"];    scene.scaleMode = SKScenescaleModeAspectFill;    // Present the scene.    [leftSKVIEw presentScene:scene];    [rightSKVIEw presentScene:scene];}

leftScene和rightScene是使用自动布局在故事板中定义的UIVIEw,每个屏幕都占用一半的屏幕。另外一个类更改为SKVIEw(它是UIVIEw)。相当微不足道

然后在游戏场景中添加一个将在这两个视图之间共享的发射器。因为只使用一个发射器,所以发射的粒子(它们如何移动)将被镜像。所以在游戏场景中,只需添加一个粒子:

-(voID)dIDMovetoVIEw:(SKVIEw *)vIEw {    /* Setup your scene here */    SKEmitterNode *emitter =  [NSKeyedUnarchiver unarchiveObjectWithfile:[[NSBundle mainBundle] pathForResource:@"MyParticle" ofType:@"sks"]];    emitter.position = CGPointMake(CGRectGetMIDX(self.frame),CGRectGetMIDX(self.frame));    emitter.name = @"explosion";    emitter.targetNode = self;    [self addChild:emitter];}

我知道你不需要所有这些代码,但如果这是你想要的某种方式,我会发布它为了完整。结果如下:

总结

以上是内存溢出为你收集整理的swift – 在Sprite Kit中复制粒子发射器效果全部内容,希望文章能够帮你解决swift – 在Sprite Kit中复制粒子发射器效果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1054695.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存