我可以在spritekit中产生连锁反应吗?

时间:2013-10-03 15:15:33

标签: ios7 xcode5 sprite-kit

我正在尝试在spritekit中使用涟漪效应。我在这里编写了ripple的代码

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

CATransition *animation=[CATransition animation];
[animation setDelegate:self];
[animation setDuration:1.75];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[animation setType:@"rippleEffect"];
[animation setFillMode:kCAFillModeRemoved];
animation.endProgress=0.99;

[animation setRemovedOnCompletion:YES];
[self.view.layer addAnimation:animation forKey:nil];
}

当我触摸屏幕中的任何地方时使用此代码会出现一个波纹。但我想特意在节点上产生连锁反应。就像屏幕上触摸点周围的10个半径圆圈一样。

请帮忙。 在此先感谢。

1 个答案:

答案 0 :(得分:1)

核心动画效果在Core Animation图层级别工作,而Sprite Kit视图是一个层,无论其中的场景和节点如何发生。

要仅对Sprite Kit节点层次结构的一部分应用类似的效果,可以使用SKEffectNode类,该类可以将Core Image过滤器应用于呈现其子节点的结果。对于动画,您可以在场景的update:方法中随时间调整滤镜参数。

对此的关注是没有方便的方法将其用于涟漪效果,具体来说:CIRippleTransition是一个过渡过滤器,而不是单图像输入过滤器,你只能使用后一种与SKEffectNode。但是,随着时间的推移,CITorusLensDistortion参数的变化可能会成为一个不错的替代品。