【个人UNITY笔记】{基础} 2D游戏中使用Shader或Camera解决Sprite前后遮挡关系

因为个人制作的奇葩游戏2D游戏是用Sprite当作角色和物体,然而Unity里不应该使用带透视的相机来渲染Sprite,因为会2个Sprite距离太近会出现闪烁,但是我就是想保留透视,同时使用Sprite,于是想了几个方法。

在Unity中制作2D游戏,前后遮挡关系总是让我很头疼。在PS里面有图层的概念,上面一层永远在下面一层的上面。然而Unity对于Sprite的渲染顺序很奇怪,是相机当前位置,到Sprite中心点的直线距离。距离越近,就越后渲染。看似没什么问题,但是因为是相机的当前位置,所以当2个Sprite相隔太近就会出现闪烁的现象,就像2个Cube交叉放在一起会出现闪烁一样,因为2个Sprite到相机的距离太接近了,导致Unity不知道谁前谁后。


例如我自己做的一个奇葩项目,斜45度的一个2D游戏,角色应该在宝石前面,现在看起来是正常的

侧面看是这样的
侧面看是这样的

然而摄相机转到一定角度就会
然而摄相机转到一定角度就会这样

有人会问,2D游戏相机不会转到这里啊,确实,但是因为我想保留一些透视的感觉,所以相机并没有调成正交视角,2个Sprite距离太近,到屏幕边缘的时候还是会错位。

这里,屏幕边缘的地方还是会错位
这里,屏幕边缘的地方还是会错位

于是我就想能否手动指定Unity的渲染顺序,这里有2种方法。

1.多Camera分层渲染法
在Camera组件里面有Culling Mask一栏属性,这里是选择此相机渲染的Layers层。

如图,此相机只渲染Player这个Layers层

此外还要在Clear Flags属性中选择Depth Only,即只渲染Culling Mask里选择的Layers层。
这样这个相机就只会显示出这一Layers层的物体,然后我们注意到Camera还有一个Depth的属性,用这个属性就可以控制多个摄影机渲染的先后次序了,Depth数字越小,渲染的次序就越前,即显示在后面。

  • 11
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值