0

ボトルを示す cocos2d で (2d) スプライトを描画しようとしています。ボトルは動的な水位を持つことができなければなりません (つまり、ボトル内の水の量はスプライトの存続期間にわたって変化する可能性があります)。

私はこれを行う方法を疑問に思っています。私は現在、空き瓶の PNG ファイルを持っています。その PNG のアルファ チャネルを調整して、スプライトをレンダリングするときに青い四角形を描画し、その上にボトル テクスチャをレンダリングできるようにしました。ボトルの中に水が入っているような印象になります。

ただし、ボトルの形自体はもちろん四角形ではないので、ボトルの外まで水が見えてしまいます。ボトル自体だけが透明になるようにボトルの画像を変更し、「外の世界」を不透明な色とアルファ チャネル値に設定することはできますが、その領域で「世界の背景」が再び見えなくなります。

これを正気な方法で実現する方法がわかりません。ボトルの画像のすべてのピクセルを読み取り、ボトルの「内側」にあるピクセルを特定してから、水をピクセルごとに描画する必要がありますか? もっと簡単な方法があるはずですよね?;)

この種のタスクのベスト プラクティスはありますか?

編集:私が話していることをやや明確にするために、下の図を参照してください;)

http://i47.tinypic.com/10rqww0.png

4

2 に答える 2

1

充填レベルが異なるボトルの複数の画像を作成し、そこからスプライト シートを作成できます。

スプライト シートを次のようにロードします。

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"bottle.plist"];

水位を設定するには、setDisplayFrameメソッドでボトルのテクスチャを変更します。

于 2012-10-14T15:33:52.417 に答える
0

可能な水のレベルが多数ある場合は、必要なサイズの CCLayerColor または水のテクスチャを描画し、その上に空のボトルを置いたスプライトを描画するだけです。次に、「水ノード」のサイズを変更できます。それが CCLayerColor インスタンスであるか、水のテクスチャを含むノードであるかに関係ありません。

于 2012-10-15T08:42:59.223 に答える