【问题标题】:Applying an effect to a SKScene is that expensive?将效果应用于 SKScene 有那么贵吗?
【发布时间】:2014-03-10 01:19:38
【问题描述】:

我正在使用 SpriteKit 开发游戏。为了响应用户获得奖金,我想在播放动作继续的同时闪烁屏幕 3 次。通过闪烁我正在反转场景颜色,但我可以使用其他效果。

我尝试在场景中使用 CIFilter,但帧速率从 60 fps 下降到 13 fps,导致游戏无法玩。

我已经尝试在整个场景中使用 CIFilter,通过这样做

CIFilter * (^invert)(void) = ^ {

  CIFilter *filter = [CIFilter filterWithName:@"CIColorInvert"];
  [filter setDefaults];
  return filter;

};

然后换个场景

self.filter = invert();
self.shouldEnableEffects = YES;

我是 Cocos2D 的长期用户。我以前用 Cocos2D 开发的另一个应用程序上做过这种效果,与使用 SpriteKit 的这种可怜的帧率相比,它对帧率几乎没有影响。

我尝试将效果仅应用于代表用户的角色,即几乎没有 100x100 像素。帧率从 60 帧下降到 30 帧……更好,但游戏也无法玩。

有什么方法可以做到这一点,或者随着剧情的发展对整个屏幕产生一些令人印象深刻的简短效果?

谢谢

【问题讨论】:

  • 当用户收到奖金时,为什么不使用图像并运行动画序列。这样您就可以保持帧的完整性。

标签: ios iphone ipad sprite-kit


【解决方案1】:

我有一个游戏,我闪屏,下面一段代码运行流畅,你可以试试看,根据需要重复操作:)

// 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"];

【讨论】:

  • 你正在现场进行动作?
  • 我喜欢 Apple 文档:这是关于 SKAction 的文档:概述 - SKAction 对象是由场景中的节点 (SKScene) 执行的动作。。 .. 场景中的一个节点,而不是场景中的一个。
  • 无论如何,它对我没有任何作用。
  • 所以在你的情况下..创建一个背景节点..然后在节点上运行操作......我想它应该也可以工作
  • 不,问题是我已经有了那个覆盖背景颜色的节点。相反,我所做的是将该节点的 alpha 更改为 0.5 和 1.0,因此它会显示后面的 bg 颜色。这太棒了!你是个天才!谢谢!!!!!!!
猜你喜欢
  • 2013-05-07
  • 2015-06-08
  • 2012-12-04
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
  • 2012-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多