欢迎光临散文网 会员登陆 & 注册

【游戏开发科普】UNITY被物体遮挡影子效果(URP版)文字版

2022-12-04 13:19 作者:枫2  | 我要投稿

大家好我是枫2,本内容有配套视频教程,文字版用于在看完视频后方便参考实践

今天分享一个UNITY做游戏的技术,这个技术有很多人分享,但是基本上都只分享了一半,你按照他们的教程做出来后就会发现角色会被任何物体遮挡,甚至角色自己的脸被帽子遮挡了,然后会看见帽子后面的脸变成了影子,这怎么玩啊

所以本期我来给大家一个可能是全网唯一的方案,由于是自己摸索出来的,所以如果我的方法不对或者还有优化空间,欢迎各路大神指出

首先看下效果,我实现的是角色在场景里只会被树遮挡,不会被别的物体,比如敌人,甚至自己的帽子遮挡,对就是这样的效果

首先说一下实现的原理,我需要把游戏里的物体分层,这里主要是分两层,一层是player,即玩家,另一层是front,即遮挡player后会显示出影子的层,所以首先需要创建层

我们进行第一步,为物体选层,角色是player,树是front,其余的都是default

第二布,制作一个影子材质,这个很简单,使用URP自带的Unlitshader就可以实现了,顺带为影子设置一个看起顺眼的颜色吧

第三步,进入URP的渲染设置,如果找不到可以看看视频教程,我们要找到这个render在文件夹里的位置,我们要做的是创建个render objects,起名为player shadow,这个名字叫什么都无所谓,只要自己看得懂就好,然后把它放在SSAO的上面一层,一定要把SSAO放在最下面,虽然打乱文字的序顺不影响阅读,但是打乱render的顺序会影响最终渲染结果

第四步,设置刚才创建的player shadow,layerMask选择player层,点开overrides,把刚才创建的影子材质拖到这里,此时你的角色已经变成影子了对吧,点击depth,depth test选择greater,此时你会发现

你的角色被帽子遮挡的部分出现了影子


第五步,找到Opaque Layer Mask,找不到去看我视频教程

点开后将player的勾点掉,此时你会发现角色只有影子,角色不见了

第六步,创建个新的render objects,起名为player,在layermask里面选择player,此时角色可以被任何东西遮挡,包括从地底看角色也有影子,所以接下来我们应该剔除叫做default的层对吧

最后一步,点开上一步创建的player,把default也点开,我们运行下游戏看看是不是达到效果了

好了,这样你就可以实现效果了


【游戏开发科普】UNITY被物体遮挡影子效果(URP版)文字版的评论 (共 条)

分享到微博请遵守国家法律