代码之家  ›  专栏  ›  技术社区  ›  Mike Fitz

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

  •  4
  • Mike Fitz  · 技术社区  · 7 年前

    我有一个照明系统已经工作和(大部分)功能。我试图实现半透明,使某些块(如水)只移除通过它们的一部分光,它可以工作,但在 在我的例子中是20。

    它看起来是这样的:
    translucency glitch

    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){}
    }
    }
    

    有人知道我做错了什么吗? 我是否可以使用其他系统来支持透明度? 有人能告诉我为什么会这样吗?

    1 回复  |  直到 4 年前
        1
  •  1
  •   Mike Fitz    7 年前

    我通过改变 for(int y=mapY-1;y>-1;y--) for(int y=0;y<mapY-1;y++) .