大家好,

经过大约八个月的开发,我发布了OptikaFX 2D——一个基于Unity制作的2D游戏光照与阴影系统。最初,我是为俯视角RPG和农场模拟游戏构建它的。

我之所以开始做这个,是因为Unity自带的Shadow Caster 2D并不能完全满足我的需求。最大的问题在于模拟阳光时,阴影无法正确表现,而且会避免阴影拉伸到整个屏幕。

于是,我最终自己编写了HLSL着色器,并尝试用不同的方式来处理这些情况。

以下是我成功实现的一些主要功能:

墙面弯曲阴影
2D精灵的阴影在碰到墙壁或其他结构时可以弯曲并垂直投射。这使它们在包含建筑物和障碍物的俯视角场景中看起来更自然。

基于时间轴的日夜循环
光照强度、颜色、方向以及动态阴影都可以通过自定义的Timeline系统进行动画控制。随着太阳移动和光照变化,阴影会自动更新。

360°精灵旋转与动态光源
角色可以围绕光源全方位移动,而阴影会根据他们的位置实时更新。例如,坐在篝火旁的角色在绕篝火移动时,会投射出不同的阴影。

我的主要目标是创建一个灵活、可自定义且注重性能的系统,适用于包含多个动态光源和移动角色的场景。

这里有一个可玩的演示,如果你想看看实际效果:
https://optikafx.itch.io/optikafx-2d

我也很乐意回答任何关于构建方式的问题。

感谢你的关注!