2011-11-15 26 views
0

我有一個從透明背景的png創建的CCSprite。在不使用主色的情況下着色CCSprite

我希望能夠以這種方式將顏色應用於此精靈,而我可以自由定義它的顏色,而精靈的實際顏色不會影響我必須添加的每種顏色的數量。

I`ve嘗試這樣做:

mySprite.color = ccc3(200200255);

爲了給我的精靈增加一點點藍色感覺,但是它的工作原理是根據精靈的外觀顏色設置要顯示的色調量,而我的精靈幾乎沒有任何藍色(大部分是黃色的)所產生的效果非常粗略,一切都變得非常黑暗,並且有一種輕微的藍色着色,但不是我想要的。

在這種情況下,對我而言,理想的效果是將淡藍色的面具添加到非常低的阿爾法。

有沒有一種簡單的方法來做到這一點,而無需撰寫精靈?

我試過使用CCTexture2D,但沒有運氣,因爲沒有內置的方法來處理顏色,大多數教程只教你如何構建紋理圖像文件。

回答

1

這在原始精靈的代碼中看起來很難做到。另一種選擇是:

  • 創建一個新的精靈,它只是你原來精靈的白色輪廓版本
  • 這個白色精靈的顏色屬性將現在正是您在
  • 通過RGB值響應
  • 在淡藍色的值,從而傳遞給白色的精靈,並正確設置不透明度
  • 然後覆蓋在你原來的精靈

有什麼好?

+0

感謝您的回答!我試圖避免這樣做,但由於CCSprite非常原始,我會試試看。然後提出幾個問題:我如何創建這個白色克隆,因爲我的圖像是一個帶圖像的正方形PNG,並且透明背景?我可以用這兩個結果精靈創建精靈還是將它們融入任何單個對象?我將精靈移動了很多,跟蹤它們併爲兩者做同樣的事情將是一件痛苦的事情。 – Marcelo

+0

啊,是的,我現在看到你想要避免組成精靈!好吧。無論如何,您可以將孩子添加到CCSprites。這些孩子然後尊重對父母所做的任何事情。我正在做同樣的事情來爲我的一些小精靈加上邊界和陰影,儘管在我的情況下,我將配件精靈放在了原始的背後,而你會把你放在前面。要在Photoshop中製作白色精靈,請在透明區域使用...魔術棒 - > CTRL + SHIFT + I - >刪除 - >用白色填充。然後在Cocos2D中按照正常方式創建它,將位置設置爲原始精靈的中心,然後添加爲小孩。 –

+0

謝謝!這應該工作!現在嘗試的時間太晚了,但我明天會試試看,並給你反饋! – Marcelo

0

您可以通過使用適當的OpenGL混合函數覆蓋(遮罩)精靈來實現此目的。當你說「添加淺藍色面具」時,那就是你需要做的。你可能會發現這個visual blendfunc tool有幫助,如果只是爲了瞭解如何混合面具精靈的作品,你可以用它來實現。然而,Cocos2D沒有內置的支持,所以你必須在cocos2d節點的-(void) draw {}方法中恢復純OpenGL。

着色(更改顏色屬性)將只修改整個圖像的RGB通道,方法是更改​​所有4個頂點的頂點顏色。

+0

感謝您的回答!由於我是iOS開發新手,如果知道它,請讓我選擇:你說的基本上是繼承Cocos2d CCSprite類,重寫它的draw方法,調用super的init,並在它下面執行骯髒的工作?你能起草幾行關於這種黑客行爲只是爲了讓我明白這個想法嗎? – Marcelo

相關問題