灯光和阴影
如何在2D视图中实现像素完美的阴影的例子,该示例基于以下来源:
- 2D像素完美阴影LIBGDX示例:https://github.com/mattdesl/lwjgl-basics/wiki/2D-Pixel-Perfect-Shadows
- 由d954mas通过技术讨论改编为Defold:https://forum.defold.com/t/problem-with-shader/3808
- Sayuris1的Defold最终样例项目:https://github.com/Sayuris1/2d_light_defold
安装
你可以在你自己的项目中使用这个解决方案,只要把这个项目作为Defold库的依赖项。打开你的game.project文件,在项目下的依赖项中添加。
使用方法
这个光影投射例子的主要组成部分是:
lights/lightsource.script- 将这个脚本附加到任何需要作为光源的游戏对象上。修改暴露的脚本属性来控制灯光属性。radius[number] - 光源的半径(像素)。color[vector4] - 光源的颜色(RGBA)。arc_angle[number] - 光源的弧形角度。可以用来生成一个弧度不超过180度的光锥。任何超过180度的都会产生一个完整的圆。static[boolean] - 对不移动或旋转的静态灯光使用此功能,以跳过每帧的灯光位置和旋转的更新。
lights/render/light_quad.go- 一个具有基本模型四边形的游戏对象,在绘制灯光和阴影时作为渲染目标使用。lights/render/lights.render和 - 绘制灯光和阴影时使用的渲染文件和渲染脚本(也包括所有标准的Defold组件,如精灵、粒子、瓷砖图等)。lights/render/lights.render_scriptlights/materials/light_occluder_*.material- 用于精灵、瓦片和其他需要遮挡光线和投射阴影的组件的材料。
第1步 - 渲染脚本
打开game.project,向下滚动到Bootstrap ,并将渲染文件改为lights/render/lights.render 。这个渲染脚本的工作原理与默认的渲染脚本类似,但也会绘制灯光和阴影:

第2步 - 添加灯光四边形
将lights/render/light_quad.go 添加到一个应该计算灯光和阴影的集合中:

第3步 - 添加灯光资源
将lights/lightsource.script 连接到任何需要作为光源的游戏对象上:

根据你的喜好配置光源的属性:

第4步 - 添加光遮挡物
改变任何在光源照射下应该投射阴影的组件的材料。从lights/materials/ ,选择一个与投射阴影的组件类型相匹配的材料:

例子
在这个资源库里有一个例子:它设置了一些光源和遮挡器,让你在场景中移动。
