在2D视图中实现像素完美的阴影的例子

306 阅读2分钟

灯光和阴影

如何在2D视图中实现像素完美的阴影的例子,该示例基于以下来源:

安装

你可以在你自己的项目中使用这个解决方案,只要把这个项目作为Defold库的依赖项。打开你的game.project文件,在项目下的依赖项中添加。

github.com/defold/samp…

使用方法

这个光影投射例子的主要组成部分是:

  • 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_script
  • lights/materials/light_occluder_*.material - 用于精灵、瓦片和其他需要遮挡光线和投射阴影的组件的材料。

第1步 - 渲染脚本

打开game.project,向下滚动到Bootstrap ,并将渲染文件改为lights/render/lights.render 。这个渲染脚本的工作原理与默认的渲染脚本类似,但也会绘制灯光和阴影:

Example of how to achieve pixel perfect shadows in a 2D view

第2步 - 添加灯光四边形

lights/render/light_quad.go 添加到一个应该计算灯光和阴影的集合中:

Example of how to achieve pixel perfect shadows in a 2D view

第3步 - 添加灯光资源

lights/lightsource.script 连接到任何需要作为光源的游戏对象上:

Example of how to achieve pixel perfect shadows in a 2D view

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

Example of how to achieve pixel perfect shadows in a 2D view

第4步 - 添加光遮挡物

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

Example of how to achieve pixel perfect shadows in a 2D view

例子

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

Example of how to achieve pixel perfect shadows in a 2D view