4
私は照明システムを既に動作させており、(ほとんど)機能しています。私は透光性を実装しようとしているので、特定のブロック(水のような)が光の一部を取り除くだけで動作しますが、それはlightmapの()ので動作を停止します。 。タイルベースの照明システムの半透明性
これは、次のようになります。
、ここでは私のコードです:
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){}
}
}
誰もが私が間違ってやっているか見ていますか? 透明性をサポートするために使用できる別のシステムはありますか? これはどうして起こっているのですか?
「停止する」とはどういう意味ですか?どのように働くの? – Bill
投げられる可能性のある「例外」を食べています。この問題のトラブルシューティングの最初のステップは、例外を記録するか、単純な 'e.printStackTrace()'を使うことです。例外がないことを確認したら、コードに焦点を当てます。 – Paul
私は本当に例外は問題だとは思わない。マップの端でスクリプトが失敗するのを防ぐために存在します。スタックトレースを出力すると、エッジの周りに無数の 'ArrayIndexOutOfBoundsException'があります。 –