我正在用Java制作一个平铺(平铺大小为16px)关卡滚动游戏。 现在我正在处理照明系统。 我使用每个灯光(黄色 block 和瓷砖)的代码计算了灯光梯度(如图所示):
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);
}
}
现在我正在尝试让方 block 以某种方式阻挡光线(就像在现实生活中一样)。 有没有一个好的方法呢? 提前致谢, 扎普利克
图片:click
最佳答案
递归地传播光。随着每个递归级别减少适当数量的光强度。还要跟踪光线移动的方向。一旦遇到障碍,就停止该递归分支。
关于java - 在瓷砖水平上阻挡光线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13751937/