4

スプライトキットで波紋効果を使用しようとしています。ここで私が書いたリップルのコードは

-(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];
}

画面のどこかに触れているときにこのコードを使用すると、1波のリップルが発生します。しかし、特にノードに波及効果を作りたいです。画面上のタッチポイントを中心に半径 10 の円のように。

助けてください。前もって感謝します。

4

1 に答える 1

1

コア アニメーション エフェクトは、コア アニメーション レイヤーのレベルで機能し、スプライト キット ビューは、その中のシーンとノードに関して何が起こっているかに関係なく、1 つのレイヤーです。

スプライト キット ノード階層の一部のみに同様の種類の効果をSKEffectNode適用するには、コア イメージ フィルタをその子ノードのレンダリング結果に適用できるクラスを使用できます。update:アニメーションの場合、シーンのメソッドで時間の経過とともにフィルタ パラメータを調整できます。

これの難点は、波紋効果に使用する便利な方法がないことです。具体的CIRippleTransitionには、 は単一画像入力フィルターではなく遷移フィルターであり、後者の種類は でのみ使用できますSKEffectNode。ただし、時間の経過とともにパラメーターを変化させるCITorusLensDistortionことは、適切な代替手段になる可能性があります。

于 2013-10-03T21:42:22.060 に答える