Code Monkey home page Code Monkey logo

ccspritewithhue's Introduction

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.

ccspritewithhue's People

Contributors

nalexn avatar anaumovaldigit avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.