我正在使用Java制作平铺(瓷砖大小为16px)级别的滚动游戏。 现在我正在处理照明系统。 我用每个灯光(黄色块和瓷砖)的代码计算了光线渐变(如图所示):
visMap = new int[level.getWidth() * level.getHeight()];
int lighted = 0;
for (int x = 0; x < level.getWidth(); x++) {
for (int y = 0; y < level.getHeight(); y++) {
double xd = (this.x >> 4) - x;
double yd = (this.y >> 4) - y;
double distance = Math.sqrt(xd * xd + yd * yd);
double p = power * 1.0;
double bright = p - distance;
visMap[x + y * level.getWidth()] = (int) (bright * power);
}
}
现在我正试图阻止光块(就像在现实生活中一样)。 有一个很好的方法吗? 提前致谢, Zaplik
图片:click
答案 0 :(得分:0)
递归传播光线。随着每个级别的递归减少光强度和适当的量。保持跟踪光线移动的方向。一旦遇到障碍,停止递归的那个分支。