ios - 是否可以在SKEmitterNode上应用过滤器?

标签 ios iphone sprite-kit skemitternode

我有一个带有SKEmitterNode的场景,当直接添加到场景中时,它可以正常工作。

但是,我想在场景上添加一个SKEffectNode来模糊发射器粒子。

这就是它的样子。

@implementation MyScene

-(id)initWithSize:(CGSize)size {    
    if (self = [super initWithSize:size]) {
        /* Setup your scene here */

        self.backgroundColor = [SKColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];

        SKEffectNode *blurNode = [[SKEffectNode alloc] init];

        CIFilter *blurFilter = [CIFilter filterWithName:@"CIGaussianBlur"];
        [blurFilter setValue:@10.0 forKey:kCIInputRadiusKey];
        blurNode.filter = blurFilter;
        blurNode.shouldEnableEffects = YES;

        NSString *bokehPath = [[NSBundle mainBundle] pathForResource:@"Bokeh" ofType:@"sks"];
        SKEmitterNode *bokeh = [NSKeyedUnarchiver unarchiveObjectWithFile:bokehPath];
        [blurNode addChild:bokeh];

        [self addChild:blurNode];
    }
    return self;
}

这将导致黑屏。

由于SKScene也是SKEffectNode的子类,因此我也尝试将CIFilter直接添加到场景中。
-(id)initWithSize:(CGSize)size {    
    if (self = [super initWithSize:size]) {
        /* Setup your scene here */

        self.backgroundColor = [SKColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];

        CIFilter *blurFilter = [CIFilter filterWithName:@"CIGaussianBlur"];
        [blurFilter setValue:@10.0 forKey:kCIInputRadiusKey];

        NSString *bokehPath = [[NSBundle mainBundle] pathForResource:@"Bokeh" ofType:@"sks"];
        SKEmitterNode *bokeh = [NSKeyedUnarchiver unarchiveObjectWithFile:bokehPath];
        [self addChild:bokeh];

        self.filter = blurFilter;
    }

    return self;
}

结果相同。

最佳答案

如果确实将滤镜直接应用到场景,则有可能实现这种效果。将以下内容添加到第二个代码中:

self.shouldEnableEffects = YES;

如果仍然看到黑屏,请尝试在黑色背景上使用亮色粒子,而不要在白色背景上使用此效果。但是希望帧率会大大下降。在“粒子编辑器”中为粒子本身使用模糊的纹理可能会更好。

关于ios - 是否可以在SKEmitterNode上应用过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21206559/

相关文章:

iphone - 如何更改 GROUPED UITableView 中各部分的高度?

iphone - 在 iOS 中创建可平移的 3D 空间

ios - arm64 objectForKey 性能异常?

ios - 在 View 可见之前执行Segue

ios - 缩小我的世界 : Joints and their positions are not adjusted

javascript - window.setTimeout() 在 Safari 中进行页面导航后停止

ios - Alamofire:使用 url、方法、参数、 header 和编码编写 POST 请求的语法

ios - Swift Apple Mach-O 链接器错误

xcode - 我选择的随机颜色生成

ios - 如何检测 SKSpriteNode 和 SKView SpriteKit 之间的碰撞