2D游戏模拟简易光照
1、1.遮罩要改变全局光照,最简单的想法就是改变所有对象的颜色。最简单的方法就是在场景前添加一个环境色遮罩。你想要什么颜色的环境光?将遮罩更改为相应的颜色。
2、但显然这个效果不是很真实(比如颜色是浮动的)。主要原因是不合理。当我们在其他物体上叠加一张半透明的图片时,颜色是这样融合的:颜色=固有颜色*(1-alpha)+照明颜色* alpha但是我们知道,一个物体能够显示颜色,是因为它在光源中反射特定波长的光。真实照明颜色应按如下方式计算:颜色=固有颜色*照明颜色*照明强度这个乘法公式的效果如下:

4、这样做的原理是不同的物体在其表面有不同的物理特性,其照明性能也不同。这里本来应该有一些比较复杂的物理公式,但是简化成了颜色倍增。如果乘法使用同样的颜色,就相当于默认所有物体都是用同样的材料做的,效果肯定不会很好。尤其是天空、云(和水面,虽然本例中没有)中出现的颜色原理,远不是地面物体的漫反射,所以需要单独指定颜色。散射和反射率不同的物体应分开处理。3.在场景中加入“照明”我之前看过一些教程教你如何在2D游戏中模拟光的效果。使用的方法类似于alpha融合,达到的效果类似于这样:

6、第二步:在高楼上随意加窗,增添乐趣第三步:添加其他细节

7、1获取每个时刻的状态首先,游戏制作的一个实际经验是,游戏状态最好直接获取,不依赖于上下文。比如,有可能我们每次开始一个游戏,都是早上开始,然后游戏里每天的时间都是固定的。这时候我们其实可以写一个定长动画来改变物体的颜色,看起来很方便,但是:如果明智的计划改变进入游戏的计划并从上次保存的时间继续,如果玩家进入房间,然后离开房间,他需要从刚才的时间继续如果你需要支持快进甚至倒带这个时候,就算了。我们需要的是能随机得到当前状态的逻辑,每个物体在当前时刻都能得到自己的颜色。2指定一天中的颜色

9、指定特定时间点的剑钕饿粪场景颜色后,就可以在程序中实现特定时间点的场景。接下来,我们只需要填写关键点之间的颜色变化过程。3插值菀蒯踔观我用过简单的线性插值。当然,有一种更平滑的方法可以在多个点之间连续变化。也可以试试。这里我想说的是,这个插值逻辑可以顺便用来做其他的事情——比如不同时间打开高层窗户的比例。4天空梯度在天空中使用渐变颜色可以立即丰富场景。渐变颜色也可以通过指定关键点的颜色并对其进行插值来获得。5雾和泛光灯,以及其他使场景变得迷人的东西如前所述,场景中至少有三层雾来独立控制颜色。此外,太阳和月亮还带来了几层泛光灯。这些都是可以指定用于插值的颜色。还有一个我很喜欢的效果是,到了晚上,高楼大厦的窗户会变得五颜六色,太妖娆了!记住,每个窗户后面都是勤劳的群居动物。你可能会注意到一些群居动物通宵工作5.摘要大概就这些时间了。其实原理很简单,主要是工作量比较大。最好给美术指定颜色,然后给程序赋予颜色。我们约定下次用调色板来谈全局照明,然后就可以领略古人的智慧了。