2011-11-15 8 views
0

透明な背景を持つpngから作成されたCCSpriteがあります。素数のみを使用せずにCCSpriteに着色する

私が追加する必要があり、各色の量に影響を与えるスプライトの実際の色なしで、それがどの色を定義すること自由にI`m方法で、このスプライトに色を適用することができるようにしたいです。

mySprite.color = ccc3(200200255);

I`veはこの試み

私のスプライトに少し青い感じを追加しようとしましたが、スプライトの存在する色に基づいて表示される色合いの量を設定することで動作し、スプライトは(そのほとんどは黄色です)結果のエフェクトはかなりスケッチであり、すべてが本当に暗くなり、青いアイカラーが1つしかありませんが、私が望むようにはありません。

このケースで私にとって理想的な効果は、非常に低いアルファでライトブルーマスクをADDに追加することです。

スプライトを作成せずに簡単に行う方法はありますか?

私はCCTexture2Dを使ってみましたが、幸運はありませんでした。色を扱うための組み込みメソッドがなく、ほとんどのチュートリアルではイメージファイルからテクスチャを構築する方法しか教えていません。

答えて

1

元のスプライトのコードでは、これは非常に困難です。別のオプションは、次のようになります。

  • このホワイトスプライトの色プロパティは、今あなたが
  • に渡しRGB値に正確に対応させていただきます
  • ちょうどあなたのオリジナルのスプライトの白いアウトラインバージョンで新しいスプライトを作成します
  • はとても白いスプライトにあなたの水色の値を渡した後、正しく
  • を不透明度を設定し、元のスプライト

どれでも良い上に重ねますか?

+0

答えをありがとう!私はそれをやめようとしていましたが、CCSpriteはとてもプリミティブなので、試してみましょう。次に、この白いクローンを作成するにはどうすればよいですか?画像は正方形のPNGで、背景は透明なので、どうすればよいでしょうか?これらの2つのスプライトでスプライトを作成したり、それらを1つのオブジェクトにブレンドすることはできますか?私はスプライトをたくさん動かすので、両方を追跡して両方の場合に同じことをするのは苦痛です。 – Marcelo

+0

ああ、私はあなたがスプライトの作成を避けたいと思ったことを知りました!しかたがない。とにかく、子供をCCSpritesに追加することができます。これらの子供たちは、親のために行われたことをすべて尊重します。私はスプライトのいくつかの周りに境界線と影を置くために同じことをしていますが、私の場合はオリジナルの背後にアクセサリスプライトを置いていますが、あなたの前にあなたのものを置くでしょう。 Photoshopで白いスプライトを作成するには、透明領域のマジックワンドを使用します。 - > CTRL + SHIFT + I - > delete - >白で塗りつぶします。次に、Cocos2Dで通常のように作成し、元のスプライトの中心に位置を設定し、子として追加します。 –

+0

ありがとう!それはうまくいくはずです!あまりにも遅くなってしまいましたが、明日試してみて、フィードバックをお寄せください! – Marcelo

0

これを実現する唯一の方法は、スプライトを適切なOpenGLブレンド関数でオーバーレイ(マスキング)することです。 「ライトブルーマスクを追加する」と言ったら、それはあなたがする必要があります。マスクスプライトとのブレンドがどのように機能し、どのようにそれを達成できるかを理解するためにのみ、このvisual blendfunc toolが役に立ちます。しかし、Cocos2Dはこのための組み込みサポートはありませんので、cocos2dノードの-(void) draw {}メソッド内で純粋なOpenGLに戻す必要があります。

色付け(色のプロパティを変更する)は、4つの頂点すべての頂点の色を変更することによって画像全体のRGBチャンネルを変更するだけです。

+0

答えをありがとう!私がiOS開発に慣れてきたので、私はそれを持っています:基本的には、Cocos2d CCSpriteクラスを継承し、その描画メソッドをオーバーライドし、superのinitを呼び出し、その直下のダーティな作業を行います。あなたは、このハッキングがちょうど私がアイデアを得るためにどのように見えるか、いくつかの行を草案することができますか? – Marcelo

関連する問題