swift – 在Sprite Kit中复制粒子发射器效果
我需要有一个粒子发射器的效果在2个地方出现重复(对于分屏),我想知道有没有人遇到这样做的方式。我的目标是让这个运行在iOS 10上。这是我迄今为止所尝试的。
>将targetNode分配给SKNode,然后复制每个框架的SKNode:targetNode在iOS 10中不起作用。 剩下的唯一选择是写我自己的粒子发射器,我想避免,所以我想知道有没有人有这个问题,知道一个解决方案来达到预期的效果。 我可以做的另一件事是预先投射发射器,但如果我走这条路线,这将占用大量纹理内存。 编辑:为了帮助可视化,我画了一张照片,白色的边框显示了分屏显示的位置。黑色边框显示场景环绕的位置。 截至目前,玩家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]; } 我知道你不需要所有这些代码,但如果这是你想要的某种方式,我会发布它为了完整。结果如下: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |