【问题标题】:How to add particles sks file as overlay on background image using Sprite Kit in Xcode?如何在 Xcode 中使用 Sprite Kit 添加粒子 sks 文件作为背景图像的叠加层?
【发布时间】:2015-08-15 15:30:12
【问题描述】:

我到处寻找如何做到这一点,但这是我能做到的。我在 MyScene.m 文件中以编程方式设置了背景图像,并且在同一文件中设置了粒子发射器 sks 文件。但是,尽管出现了右下角的文本(计算节点和 fps),但效果并没有出现。所以有人会认为效果也会出现,但事实并非如此。任何想法如何解决这个问题?

MyScene.m

-(void) didMoveToView:(SKView *)view {
    NSString *path = [[NSBundle mainBundle] pathForResource:@"MyParticle" ofType:@"sks"];
    SKEmitterNode *node = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

    node.particlePosition = CGPointMake(550, 500);
    node.particleBirthRate = 10;

    [self addChild:node];

    SKTexture *backgroundTexture = [SKTexture textureWithImageNamed:@"Scene22"];
    SKSpriteNode *background = [SKSpriteNode spriteNodeWithTexture:backgroundTexture size:self.view.frame.size];
    background.position = (CGPoint) {CGRectGetMidX(self.view.frame), CGRectGetMidY(self.view.frame)};

    [self addChild:background];
}

视图控制器有view did load方法,也试过viewWillLoadWithSubviews但没用。

【问题讨论】:

    标签: ios xcode sprite-kit


    【解决方案1】:

    您首先添加了粒子效果,然后添加了精灵。这将首先绘制粒子效果,然后在粒子效果上绘制背景精灵。

    您可以颠倒运行addChild: 的顺序,也可以简单地使用zPosition 属性将粒子效果置于背景精灵的前面。

    【讨论】:

    • 我的 backgroundTexture 有问题,它没有全屏显示图像。高度是全屏,但它是从右侧压缩的,因此右侧屏幕的 1/4 是空白的。我在视图控制器中使用 viewWillLayoutSubviews 并像这样配置场景 SFMyScene *scene = [SFMyScene sceneWithSize:skView.bounds.size]; scene.scaleMode = SKSceneScaleModeAspectFill;
    【解决方案2】:

    实际上应该是:

    node.particleZPosition = 10; //not zPostion for emitters
    

    background.zPosition = 0; //some values to this effect
    

    稍后...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-09
      • 2015-09-27
      • 2019-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多