在我的基於2D平鋪的遊戲中,玩家可以在平鋪時改變顏色。簡單的方法(以及我已經完成的)是使用SpriteBatch.Draw
中的tint
參數。不要着色,但「着色」精靈
這看起來不錯,而且這裏有一個例子:
但是說,我要畫的木白。如果你曾經與色調混淆,你知道這是不可能的使用色調參數。 Color.White
會將sprite設爲默認顏色,而不是白色。這不是一個主要問題,但我想有些用戶可能需要它。
我的問題是,有沒有一種基於色調/飽和度而不是色調的精靈顏色的方法。類似於GIMP中的「colorify」功能。
一個顯而易見的方法是使用在GIMP這個功能,只是出口的精靈爲每種顏色。麻煩在於,這對我所有的精靈來說都是永遠的事情,每個精靈都有多種變化,這意味着你可以在一個模塊類型中總共使用100個以上的組合。
這可能嗎?我想着色器可能會完成這項工作。
爲什麼不讓基礎精靈儘可能明亮(接近白色)?你可以用像素着色器實現任意效果,但我懷疑在這種情況下這是必要的。在我看來,Gimp使用與tint參數相同的技術。 –
研究HSV顏色模型:[鏈接](http://en.wikipedia.org/wiki/HSL_and_HSV)。您可以將您的紋理從RGB轉換爲HSV,將偏移應用於Hue以更改顏色,然後將其轉換回RGB。雖然如果你的紋理以白色開始,並且使用內置的XNA着色,它絕對會更容易。 – foolmoron