我正在尝试在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个半径圆圈一样。
请帮忙。 在此先感谢。
答案 0 :(得分:1)
核心动画效果在Core Animation图层级别工作,而Sprite Kit视图是一个层,无论其中的场景和节点如何发生。
要仅对Sprite Kit节点层次结构的一部分应用类似的效果,可以使用SKEffectNode
类,该类可以将Core Image过滤器应用于呈现其子节点的结果。对于动画,您可以在场景的update:
方法中随时间调整滤镜参数。
对此的关注是没有方便的方法将其用于涟漪效果,具体来说:CIRippleTransition
是一个过渡过滤器,而不是单图像输入过滤器,你只能使用后一种与SKEffectNode
。但是,随着时间的推移,CITorusLensDistortion
参数的变化可能会成为一个不错的替代品。