0

背景が透明な png から作成された CCSprite があります。

スプライトの実際の色が追加する必要がある各色の量に影響を与えることなく、どの色であるかを自由に定義できる方法で、このスプライトに色を適用できるようにしたいと考えています。

私はこれを試しました:

mySprite.color = ccc3(200,200,255);

スプライトに少し青っぽい感じを追加しようとしましたが、スプライトの既存の色に基づいて表示される色合いの量を設定することで機能し、スプライトにはほとんど青が含まれていません (ほとんど結果として得られる効果はかなり大ざっぱで、すべてが非常に暗くなり、わずかに青みがかった色が 1 つありますが、私が望んでいたものではありません。

この場合の理想的な効果は、アルファが非常に低い水色のマスクを追加することです。

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

CCTexture2D を使用してみましたが、うまくいきませんでした。色を操作する方法が組み込まれておらず、ほとんどのチュートリアルでは画像ファイルからテクスチャを作成する方法しか教えられていません。

4

2 に答える 2

1

これは、元のスプライトを使用してコードで行うのは一見難しいです。別のオプションは次のとおりです。

  • 元のスプライトの白抜きバージョンである新しいスプライトを作成します
  • この白いスプライトの色プロパティは、渡された RGB 値に正確に応答するようになりました
  • 水色の値を白いスプライトに渡し、不透明度を正しく設定します
  • 次に、元のスプライトに重ねます

何かいい?

于 2011-11-16T16:28:30.263 に答える
0

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

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

于 2011-11-15T15:15:00.267 に答える