Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 反转渐变/灯光_C#_Xna_Distance_Tiles_Lighting - Fatal编程技术网

C# 反转渐变/灯光

C# 反转渐变/灯光,c#,xna,distance,tiles,lighting,C#,Xna,Distance,Tiles,Lighting,我基本上做了一些渐变,通过给一个格子颜色的瓷砖,它看起来像这样: 现在,我想反转这个,光线是白色的,周围是黑色的,我该怎么做呢?我试了很多,但都没用 代码如下: foreach (Tile tiles in Tiles) { tiles.distance = (mousePos - tiles.pos).Length(); tiles.color = new Color(tiles.distance /

我基本上做了一些渐变,通过给一个格子颜色的瓷砖,它看起来像这样:

现在,我想反转这个,光线是白色的,周围是黑色的,我该怎么做呢?我试了很多,但都没用

代码如下:

            foreach (Tile tiles in Tiles)
        {
            tiles.distance = (mousePos - tiles.pos).Length();

            tiles.color = new Color(tiles.distance / size, tiles.distance / size, tiles.distance / size);
        }

只需从0xFF中减去每个颜色分量:

float value = 0xFF - tiles.distance / size;
tiles.color = new Color(value, value, value);

从255减去(全白色)

如果这看起来很明显(意味着你已经尝试过了),我很抱歉,但我自己没有想太多次就这么做了

您使用的是什么数据类型?例如,tiles.distance看起来像一个float,这意味着除法将解析为一个float,这反过来意味着您将使用颜色(单,单,单)构造函数,而不是颜色(字节,字节,字节)构造函数。这意味着您必须从1中减去,而不是从255/0xFF中减去,否则您将得到远高于1的值(capped->white)

如果这是一个问题,则以下内容将:

tiles.color = new Color(1 - tiles.distance / size, 1 - tiles.distance / size, 1 - tiles.distance / size);

这对我不起作用,我只得到了白色的瓷砖,就像图中一样,但没有梯度。
tiles.color = new Color(1 - tiles.distance / size, 1 - tiles.distance / size, 1 - tiles.distance / size);