私が話している「カッティング」効果は、有名なiPhoneゲーム「FruitNinja」と「Cutthe Rope」で見ることができます。つまり、画面上で指を動かすと、指の後にトレイルがあり、ナイフカット効果。
この種の効果の名前は何で、どのように実装されているのでしょうか。誰かが私にヒントを与えることができますか?
これは、これまでにゲームをどのように実装したか、つまり、Cocoaのように2Dグラフィックスを使用するかOpenGLを使用するかによって異なります。たとえば、Fruit Ninjaは、果物が3Dモデルであるため、後者を使用します。その場合、Render()チェーンは通常、すべての3Dオブジェクトを描画し、投影を正投影に変更して、スプライトフォントや変換されていない2Dスプライト(HUDなど)などをすべての上にレンダリングします。これらの「スプライト」はそれぞれ、テクスチャイメージがマッピングされたクワッド(長方形を形成する2つの三角形)です。テクスチャがグラフィックメモリに読み込まれると、GPUはテクスチャを非常に高速に何度も描画し、追加コストなしでストレッチまたは回転できます。
これが私が行う方法です。必要な「ストリーク」のように見える透明なテクスチャのクワッドです。次に、タッチポイントを監視し、前の(または複数の前の)タッチ座標を追跡します。2点間の距離(Googleの「距離式」)とその角度ベクトルを計算します(距離がわかったので、deltaX、deltaYで2つの除算を実行します)。これらをクワッドの変換に使用する4x4マトリックスに適用して、クワッドをストレッチし(Xを距離でスケーリング)、ベクトルに従って回転させ、最新のタッチポイントのX、Yに変換します。タッチを上げると、ストリークを簡単に縮めたり消したりできます。
湾曲したスワイプを処理するために使用できる別のアプローチがあります。それはもっと難しいですが、見栄えが良くなります。三角ストリップを使用して、その長さに沿って頂点全体に「ストリーク」画像(テクスチャ座標0.0〜1.0)を適用します。次に、以前のすべてのタッチポイントに基づいて、すべての頂点座標を自分で設定し、ポイント間の線を計算して、頂点を垂直にオフセットします。わかる?そうだといい!このアプローチは楽しく、聞こえるほど苦痛ではありません、私は約束します!
CoreAnimationを始めるのに適した場所は、WWDC2010ビデオです。
アクセスするには、開発中のアカウントでログインするように求められます。
GLPaintサンプルはあなたにいくつかのヒントを与えるかもしれません。