码匠来了!今天分享的是Shader,2D游戏场景中如何使用模拟光照后产生动态影子,特别是spine动画中很多时候做影子就很麻烦,那么今天分享的是支持精灵、序列帧动画、Spine动画的影子效果,文中最后将游戏Demo献上,小白做游戏开发的下载下来入门学习。


先弄一张精灵图片,当然不要局限,任何图片皆可以,花花草草,树木等等。我弄了个大唐高深。帅不帅。

接下来我们就将材质装载了着色器代码的Shader【定点和片元着色器.effect,放入材质中】,Shader采用双管线渲染,Pass0负责影子,Pass1负责渲染精灵。

可以随意调整位置吗?可以的,影子的角度、方向、镜像、斜率都可以调整,2D游戏如何模拟太阳光线Shader,那么就可以动态驱动着色器函全局uniform属性调整,就好像2D游戏在3D场景中一样。

手动换角度,我们将USkewAngle的正角度换成负号,将x偏移变量UOffsetX同样给一个符号,负负得正,这样坐标位置在人物脚下。

手动镜像视角。将Pass0管线中的SAMPLE_FROM_RT变量勾上则影子向前投影。

手动调整负角度

影子的颜色透明度参数为UShadowColor,修改箭头指向的值就改变了透明度。

影子颜色同样是UShadowColor属性,前三个代表RGB颜色参数。



接下来是属性UScaleY斜切Y轴缩放率【默认0.5】。


OK下面说序列帧。

序列帧动画其实就是精灵的VU偏移。只要是精灵就支持的,如下,将原来做那个破动作拿过来播两下看下影子是不是实时变化。

OK序列帧也是支持的吧。接下来看Spine支持情况。

Spine很多时候考虑那个影子是多余了,现在用Shader代替他了,也不用圆盘影子了。比如这个猪八戒。你看这个八戒在Spine中就不做影子,然后用着色器。

把材质弄上去影子就出来了。
接下来上才艺,原本只是简单介绍一下这个Shader,仅此而已,结果花了2个小时做了个Demo,你们拿去玩吧,这个对我没啥意义,几下就搓出来了。这个演示源码包括如下内容,你要是小白这个源码对你很重要,代码采用中文编程,帮你快速了解逻辑和原理,涉及【多相机管理】、【Cocos帧动画】、【Spine动画控制】、【角色位移和相机追踪】、【多种类事件派发机制】、【动态加载技能】、【动态技能释放】等等。你将会轻松开启游戏创作者之旅。【进Qun获取源码地址】【兄弟们帮我点点赞吧,源码+shader直接白嫖啦】

欢迎加入『小游码匠』共创合作社区群
学习、成长、合作、创新期待您的加入
【值得一看】
Cocos虚拟摇杆怎么实现?码匠手把手教你,从数学原理到横竖屏适配全解析!
『联机对战』小游戏开发:不写一行后端代码,好友 & 排位赛直接可用
【硬核】程序员逆袭动画大神!不用美术基础,60行代码做出百万播放特效!
夜雨聆风