我需要有一个粒子发射器效果才能在2个点中出现重复(出于分屏目的),我想知道是否有人遇到过这种方法。我的目标是在iOS 10上运行它。这是到目前为止我尝试过的。
targetNode
分配给SKNode
,然后每帧复制SKNode
:targetNode
在我的iOS 10中不起作用。 SKNode
,并使用view.textureFromNode
制作纹理以复制每帧:占用帧的1/120,对于我来说太慢了。 SKNode
中:操作将无法在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
是在 Storyboard 中定义的UIView,使用自动布局分别占据一半的屏幕。同样,将类更改为SKView(它是UIView)。相当琐碎...然后在您的游戏场景中,添加一个将在这两个 View 之间共享的发射器。因为仅使用一个发射器,所以发射(运动)的粒子将被镜像。因此,在游戏场景中,只需添加一个粒子:
-(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中复制粒子发射器效果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40424322/