CCSpriteWithHue
is a subclass of CCSprite
from cocos2d which allows to programmatically change the hue of the sprite in runtime using a fragment shader.
In games it is often necessary for multiple characters to differ only in color, for example, to play in different teams.
You can certainly duplicate all animations in a different color palette and attach them to the project, but it drastically increases the size of the application and restricts user to choose from a limited number of color sets.
There is an alternative approach with color
property of CCSprite
, but it tints the sprite in a single color and it loses its colorfulness.
With CCSpriteWithHue
you can use a hue rotation technique to get a thousand of colorful variations of your original sprite, and it works perfectly with animations and transparency.
The basics for hue rotation algorithm were taken from Apple's GLImageProcessing sample project
I optimised the algo so that it does not affect the performance even if the hue value is changing rapidly.
Build and run the CCSpriteWithHue-Sample
project in Xcode
CCSpriteWithHue * sprite = [CCSpriteWithHue spriteWithFile:@"mySprite.png"];
sprite.hue = M_PI_4;
The hue property represents the hue rotation angle from 0 to 2 * π radians, but you can specify any value, it will remove a complete revolutions.
Alexey Naumov
CCSpriteWithHue
is available under the MIT license. See the LICENSE file for more info.