首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >雪碧试剂盒中粒子发射极效应的复制

雪碧试剂盒中粒子发射极效应的复制
EN

Stack Overflow用户
提问于 2016-11-04 13:47:06
回答 1查看 1.1K关注 0票数 23

我需要有一个粒子发射器的效果,以出现在两个点重复(为分裂屏幕的目的),我想知道是否有人遇到了这样做的方式。我的目标是在iOS 10上运行这个程序。

  1. targetNode分配给SKNode,然后复制SKNode的每个帧:targetNode在iOS 10中对我不起作用。
  2. 将粒子发射器分配给一个SKNode,并使用view.textureFromNode制作一个纹理来复制每一帧:需要帧的1/120,对我来说太慢了。
  3. 将自定义操作分配给将节点复制到另一个SKNode中的粒子节点:操作不会在iOS 10上运行
  4. 复制现有粒子节点,希望种子不是随机的:种子是随机的。
  5. 尝试在更新时复制粒子发射器:粒子只是在原点产生
  6. 尝试过的SKReferenceNode :只是发射器的一个副本,自己运行

唯一的选择,我只剩下真正的发射是写我自己的粒子发射器,我试图避免,所以我想知道是否有其他人有这个问题,并知道一个解决方案,以达到预期的效果。

我可以做的另一件事是预先记录发射器,但如果我走这条路,这会占用大量的纹理记忆。

编辑:为了帮助可视化,我画了一幅图片,白色边框显示了分割屏幕发生的位置。黑色边框显示了场景包装发生的位置。

现在,玩家1和玩家2都在原来的场景中。

玩家2正在向右走,即将击中一个世界包裹,将他移动到世界的左边,但他还没有击中它。因此,我需要一个副本的场景发生,使它在视觉上看起来像一个场景。由于玩家1仍然在原来的场景,原来的发射器需要留在原地。玩家2将不得不看到相同的图像发生在副本中,否则一旦他通过那个边界,一个“浮躁”的效果就会发生,并且包装的错觉现在消失了。

最终结果:

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

EN

回答 1

Stack Overflow用户

发布于 2016-11-04 16:09:16

这只是起作用(我猜是按照预期),但我不知道有多少是表演性或它如何适合你的需要和你当前的游戏。不管怎样,也许它能在某种程度上帮助你。首先,在GameViewController...Split屏幕上:)

代码语言:javascript
复制
#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];

}

leftScenerightScene是在故事板中定义的UIViews,它们分别使用autolayout来占用屏幕的一半。另外,一个类被更改为SKView (它是UIView)。相当琐碎..。

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

代码语言:javascript
复制
-(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];
}

我知道您不需要所有这些代码,但是如果这在某种程度上是您想要的,我会发布它的完整性。其结果是:

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40424322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档