Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.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
Java 基于瓷砖的照明系统中的半透明性_Java_Light_Translucency - Fatal编程技术网

Java 基于瓷砖的照明系统中的半透明性

Java 基于瓷砖的照明系统中的半透明性,java,light,translucency,Java,Light,Translucency,我有一个照明系统已经开始工作并且(大部分)正常工作。我试图实现半透明,以便某些块(如水)只移除通过它们的一小部分光,它可以工作,但在光照贴图的整数限制下停止工作(在我的例子中为20) 这就是它的样子: 这是我的代码: for(int x=0;x<mapX;x++){ for(int y=mapY-1;y>-1;y--){ try{ if(map[x][y] instanceof LightSource) lightmap[

我有一个照明系统已经开始工作并且(大部分)正常工作。我试图实现半透明,以便某些块(如水)只移除通过它们的一小部分光,它可以工作,但在光照贴图的整数限制下停止工作(在我的例子中为20)

这就是它的样子:

这是我的代码:

for(int x=0;x<mapX;x++){
for(int y=mapY-1;y>-1;y--){
    try{
       if(map[x][y] instanceof LightSource)
                    lightmap[x][y]=19;
       else{
          else{
                if(x-1>-1&&lightmap[x][y]<lightmap[x-1][y])
                     lightmap[x][y]=lightmap[x-1][y]-map[x][y].translucency;
                if(x+1<lv.map.length-1&&lightmap[x][y]<lightmap[x+1][y])
                     lightmap[x][y]=lightmap[x+1][y]-map[x][y].translucency;
                if(y+1<lv.map[0].length-1&&lightmap[x][y]<lightmap[x][y+1])
                     lightmap[x][y]=lightmap[x][y+1]-map[x][y].translucency;
                if(y-1>0&&lightmap[x][y]<lightmap[x][y-1])
                     lightmap[x][y]=lightmap[x][y-1]-map[x][y].translucency;
            }
      }
  }catch(Exception e){}
}
}
for(int x=0;x-1;y--){
试一试{
if(映射光源的[x][y]实例)
光照图[x][y]=19;
否则{
否则{
如果(x-1>-1&&lightmap[x][y]我通过更改
for(int y=mapY-1;y>-1;y--)

for(int y=0;y“停止工作”是什么意思?”以何种方式停止工作?您正在吃任何可能引发的
异常
。解决此问题的第一步是记录异常或使用简单的
e.printStackTrace()
。一旦确认没有异常,那么就关注代码。我真的不认为这些异常是问题所在。它们的存在是为了防止脚本在映射的边缘失败。如果我打印堆栈跟踪,它只会在边缘给我大量的
ArrayIndexOutOfBoundsException
异常。它会停止工作如图所示,在不应该的位置将水的灯光值设置为0。这是一个
float[][]
。在输出为灯光之前,该值将被转换为
int
半透明性也为
float
,对于大多数块为1,对于水为0.2。