4

我正在尝试在 spritekit 中使用涟漪效应。在这里,我为波纹编写了代码

-(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 个半径的圆圈。

请帮忙。提前致谢。

4

1 回答 1

1

核心动画效果在核心动画层级别上工作,您的 Sprite Kit 视图是一层,无论其中的场景和节点发生什么。

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

对此的问题是,没有方便的方法将其用于涟漪效果,特别是:CIRippleTransition是过渡滤镜,而不是单图像输入滤镜,您只能将后一种与SKEffectNode. CITorusLensDistortion不过,随着时间的推移改变参数可能会成为一个不错的替代品。

于 2013-10-03T21:42:22.060 回答