0

我正在尝试在 cocos2d 中绘制一个(2d)精灵,显示一个瓶子。瓶子应该能够具有动态水位(即瓶子中的水量可以在精灵的生命周期内改变)。

我想知道如何做到这一点。我目前有一个空瓶子的PNG文件。我调整了该 PNG 的 alpha 通道,因此在渲染精灵时,我可以绘制一个蓝色矩形并在其上渲染瓶子纹理。这会给人一种水在瓶子里的印象。

不过,瓶子本身的形状当然不是长方形的,所以可以看到瓶子外面的水。我可以改变瓶子图像,使只有瓶子本身是透明的,并将“外部世界”设置为不透明的颜色和 Alpha 通道值,但这又会阻止“世界背景”在该区域可见。

我根本不知道如何以理智的方式实现这一点。我真的必须读取瓶子图像的每个像素,识别瓶子“内部”的像素,然后逐个像素地绘制水吗?一定有更简单的方法,对吧?;)

此类任务的任何最佳实践?

编辑:见下图,让我更清楚地说,我在说什么;)

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 回答