我目前正在java中构建一个游戏,用于娱乐和教育目的。这是一款基于2d拼图的游戏。渲染是通过rgb值逐个像素完成的。 我目前不使用任何库/游戏引擎。
然而,我遇到的问题超出了我对java编程的基本知识。我打算添加一个昼/夜循环,但意识到我不知道如何在游戏中添加照明。 我认为调整rgb值可能是一个选项,但我不知道这是否可行或如何完成。那么,是否有可能在没有引擎或使用库的情况下为游戏添加光照/黑暗(如果是这样,那么将如何完成)?
答案 0 :(得分:0)
如果您使用RGB值绘制单个像素,则将其设为黑暗的一种简单方法是创建各种过滤器。
您可以通过将rgb值乘以常数来缩放颜色的“亮度”。深度小于1,轻于1小于1。
因此,如果您有鲜红色(240,10,10),您可以通过将所有RGB分量乘以.5来使其成为“夜间模式”,从而为您提供更深的红色(120,5,5)。如果您在RGB颜色选择器中查看这些值,您可以看到它们是相同的颜色,只是不同的阴影。
答案 1 :(得分:0)
看看RGB颜色模型:http://en.wikipedia.org/wiki/RGB_color_model
总之,你有三个颜色通道(红色,绿色,蓝色),每个颜色通道值越高颜色就越多。
因此,您可以通过分离颜色通道,将其值减少一些量并将通道重新组合为RGB来创建更暗的颜色:
public static int muchDarker(int rgb) {
int r = (rgb >> 16) & 255; // red
int g = (rgb >> 8) & 255; // green
int b = rgb & 255; // blue
// now reduce brightness of all channels to 1/3
r /= 3;
g /= 3;
b /= 3;
// recombine channels and return
return (r << 16) | (g << 8) | b;
}