在java游戏(明/暗)中进行日/夜

时间:2014-05-28 17:43:57

标签: java game-physics

我目前正在java中构建一个游戏,用于娱乐和教育目的。这是一款基于2d拼图的游戏。渲染是通过rgb值逐个像素完成的。 我目前不使用任何库/游戏引擎。

然而,我遇到的问题超出了我对java编程的基本知识。我打算添加一个昼/夜循环,但意识到我不知道如何在游戏中添加照明。 我认为调整rgb值可能是一个选项,但我不知道这是否可行或如何完成。

那么,是否有可能在没有引擎或使用库的情况下为游戏添加光照/黑暗(如果是这样,那么将如何完成)?

2 个答案:

答案 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;
}