我知道以前有人问过这个问题,但不幸的是我是这门语言的新手,所以我发现的复杂解释至少对我没有帮助。
我的游戏需要一个光照引擎,并且我尝试了一些程序光照系统。这种方法效果最好:
if (light[xx - 1, yy] > light[xx, yy]) light[xx, yy] = light[xx - 1, yy] - lightPass;
if (light[xx, yy - 1] > light[xx, yy]) light[xx, yy] = light[xx, yy - 1] - lightPass;
if (light[xx + 1, yy] > light[xx, yy]) light[xx, yy] = light[xx + 1, yy] - lightPass;
if (light[xx, yy + 1] > light[xx, yy]) light[xx, yy] = light[xx, yy + 1] - lightPass;
(如果它们更亮,则通过“lightPass”变量减去相邻值)(它在 for() 循环中)
除了几个明显的原因之外,这一切都很好而且花花公子:
- 系统优先考虑先出现的东西,在这种情况下,左边的值 (x - 1)
- 删除光源时,系统无法将较亮的值替换为较暗的值
这就是上面的代码应用于我的游戏的样子:
如果我能在创建新的程序或其他照明系统方面获得一些帮助,我将不胜感激!