狼人杀2D墙体阴影Shader解决方案

这篇博客介绍了如何使用Shader动态实现狼人杀游戏中2D墙体阴影效果。通过将人物视为点光源,墙体视为线段,通过判断像素点与光源和墙体线段的关系来确定阴影。代码展示了核心的Shader编码,虽然简单但能有效展示阴影功能。
摘要由CSDN通过智能技术生成

狼人杀2D墙体阴影

先看效果

在这里插入图片描述
在这里插入图片描述
这个阴影是动态的,随着人物的移动(点光源的移动),阴影也随之变化。
整体的表现效果非常好。

思路
人物可抽象为点光源,而墙体则抽象为线段。线段可以阻挡光线。
那么在shader片段程序中,如何来判断当前像素的着色,是有光还是黑暗呢?
在这里插入图片描述
上图可以看到 当前uv与点光源组成的线段,与 墙体线段 如果相交则 当前uv着色偏暗,反之则有光照。

由于我没有这么多素材来做到 道路和墙体的效果,这里仅是核心shader的编码。

先看看效果:

在这里插入图片描述

比较简陋,但已经把核心的功能说明清楚了。
红点代表点光源(lpos),line1 line2 分别代表了两个线段。

上代码:

CCEffect %{
  techniques:
  - p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值