Skip to content

chenyongduan/CCSpriteWithHue

 
 

Repository files navigation

CCSpriteWithHue

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.

Comparison of CCSprite' color and CCSpriteWithHue' hue

An author of an original image is [Lord_Lambert](https://www.fl.ru/users/Lord_Lambert/viewproj.php?prjid=4180816)

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.

Demo

Build and run the CCSpriteWithHue-Sample project in Xcode

Example Usage

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.


Contact

Alexey Naumov

License

CCSpriteWithHue is available under the MIT license. See the LICENSE file for more info.

About

Hue rotation for sprites in cocos2d game engine

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Objective-C 87.4%
  • C 12.0%
  • Other 0.6%