我正在使用SpriteKit开发游戏。为了响应用户获得奖励,我想在播放动作继续时将屏幕闪烁3次。通过闪烁,我正在反转场景颜色,但我愿意使用其他效果。
我曾尝试在场景中使用CIFilter,但帧速率从60 fps降至13 fps,使游戏无法播放。
我试图通过这个
在整个场景中使用CIFilterCIFilter * (^invert)(void) = ^ {
CIFilter *filter = [CIFilter filterWithName:@"CIColorInvert"];
[filter setDefaults];
return filter;
};
然后改变场景
self.filter = invert();
self.shouldEnableEffects = YES;
我是Cocos2D的长期用户。我在过去使用Cocos2D开发的另一个应用程序中做了这种效果,与使用SpriteKit的这种可悲的帧速率相比,它对帧速率几乎没有影响。
我试图将效果仅应用于代表用户的角色,即仅为100x100像素。帧率从60降到30fps ......更好但游戏也无法播放。
随着游戏的发展,有什么方法可以做到这一点或者对整个屏幕产生一些令人印象深刻的短暂效果?
感谢
答案 0 :(得分:2)
我有一个游戏,我在屏幕上闪烁,下面的代码运行顺畅,您可以尝试一下并根据需要重复操作:)
// Flash background if contact is detected
[self runAction:[SKAction sequence:@[[SKAction repeatAction:[SKAction sequence:@[[SKAction runBlock:^{
self.backgroundColor = [SKColor redColor];
}], [SKAction waitForDuration:0.05], [SKAction runBlock:^{
self.backgroundColor = [SKColor blueColor];
}], [SKAction waitForDuration:0.05]]] count:4], [SKAction runBlock:^{
//Do anything additional you wan to run during flash period
}]]] withKey:@"flash"];