我需要有一个粒子发射器的效果,以出现在两个点重复(为分裂屏幕的目的),我想知道是否有人遇到了这样做的方式。我的目标是在iOS 10上运行这个程序。
targetNode分配给SKNode,然后复制SKNode的每个帧:targetNode在iOS 10中对我不起作用。SKNode,并使用view.textureFromNode制作一个纹理来复制每一帧:需要帧的1/120,对我来说太慢了。SKNode中的粒子节点:操作不会在iOS 10上运行唯一的选择,我只剩下真正的发射是写我自己的粒子发射器,我试图避免,所以我想知道是否有其他人有这个问题,并知道一个解决方案,以达到预期的效果。
我可以做的另一件事是预先记录发射器,但如果我走这条路,这会占用大量的纹理记忆。
编辑:为了帮助可视化,我画了一幅图片,白色边框显示了分割屏幕发生的位置。黑色边框显示了场景包装发生的位置。

现在,玩家1和玩家2都在原来的场景中。
玩家2正在向右走,即将击中一个世界包裹,将他移动到世界的左边,但他还没有击中它。因此,我需要一个副本的场景发生,使它在视觉上看起来像一个场景。由于玩家1仍然在原来的场景,原来的发射器需要留在原地。玩家2将不得不看到相同的图像发生在副本中,否则一旦他通过那个边界,一个“浮躁”的效果就会发生,并且包装的错觉现在消失了。
最终结果:
我们刚刚说F%%它,玩家1和玩家2将看到不同的发射器节点,我们将只是附加到每个玩家的相机在需要的时候。
发布于 2016-11-04 16:09:16
这只是起作用(我猜是按照预期),但我不知道有多少是表演性或它如何适合你的需要和你当前的游戏。不管怎样,也许它能在某种程度上帮助你。首先,在GameViewController...Split屏幕上:)
#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是在故事板中定义的UIViews,它们分别使用autolayout来占用屏幕的一半。另外,一个类被更改为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];
}我知道您不需要所有这些代码,但是如果这在某种程度上是您想要的,我会发布它的完整性。其结果是:

https://stackoverflow.com/questions/40424322
复制相似问题