Unity的渲染层级(layer),决定了2D游戏的渲染顺序,值越大的层级越后渲染,因渲染层级大的物体会覆盖渲染层级小的物体。在Sprite Renderer中,分为Sorting Layer和Order in Layer,通过这两个属性可以设置物体的渲染层级。

然而在2D游戏中,常常会有角色一会儿跑到物体前,一会儿跑到物体后面的情况,如下图。

如果只设置物体的Layer,无法实现正确的遮挡关系,会产生这种情况:

这里介绍一种引擎自带方法,通过在unity中设置自定义轴向控制精灵的渲染。

在Edit->Project Settings->Graphics中,找到Camera Settings(摄像机渲染设置),将Transparency Sort Mode(透明度排序模式)设置为Custom Axis,即根据自定义的轴向进行渲染。【透明度排序模式是用来决定sprite精灵的绘制顺序的】

由于2D的遮挡关系常常是由y轴确定的,越往上越会被覆盖,所以将Transparency Sort Axis中的y设为1,其余设置为0。

完成上述设置后的效果如下,此时已经有初步的遮挡效果,但可以看出现在比较的是游戏物体中心(Center)的y值,而要比较的其实是物体底部的y值,因此我们要更改物体的轴心。

在物体的SpriteRanderer中找到Sprite Sort Point(精灵渲染顺序点),在默认情况下是物体的中心点(Center),这里需要选择的是轴心点,即物体以此为支点旋转的点Pivot。

之后找到游戏物体对应的图片,将轴心点设置在物体的最底端Bottom或自定义Custom。

之后再根据实际需要,给物体加上碰撞就大功告成啦~

【ps:还有一种通过代码直接修改物体的Layer的方式,如下:】

void Update()
{if (player.position.y > tree.position.y){player.transform.GetComponent<SpriteRenderer>().sortingOrder = 2;tree.transform.GetComponent<SpriteRenderer>().sortingOrder = 1;}if (player.position.y < tree.position.y){player.transform.GetComponent<SpriteRenderer>().sortingOrder = 1;tree.transform.GetComponent<SpriteRenderer>().sortingOrder = 2;}
}
//通过“游戏对象.transform.GetComponent<SpriteRenderer>().sortingOrder”可以直接修改层级

【Unity2D游戏】实现实时的正确的遮挡关系(引擎自带功能)相关推荐

  1. Unity2D游戏开发和C#编程大师班

    本课程采用现代游戏开发的最新内容和最新技术(Unity 2D 2022) 学习任何东西的最好方法是以一种真正有趣的方式去做,这就是这门课程的来源.如果你想了解你看到的这些不可思议的游戏是如何制作的,没 ...

  2. unity2d游戏开发系列教程:四、一个2D游戏所需要的主要功能(游戏框架)

    目录 unity2d游戏开发系列教程:一.环境安装 unity2d游戏开发系列教程:二.新建工程并熟悉Unity编辑器常用功能 unity2d游戏开发系列教程:三.场景布置,增加怪物和机关 原文下载 ...

  3. unity2d游戏开发系列教程:三、场景布置,增加怪物和机关

    目录 unity2d游戏开发系列教程:一.环境安装 unity2d游戏开发系列教程:二.新建工程并熟悉Unity编辑器常用功能 第一节.场景草地布置 先查看一下资源文件里都有什么,一会就要用到的 打开 ...

  4. unity2d游戏开发系列教程:二、新建工程并熟悉Unity编辑器常用功能

    目录 unity2d游戏开发系列教程:一.环境安装 第一步.打开项目 耐心等待一小会 工程界面 第二步.创建第一个场景(第一关)进行试玩 点击图中标号1的运行按钮,即可简单试玩感受,操作如下 移动A, ...

  5. Unity2D游戏开发基础教程1.2项目、资源和场景

    Unity2D游戏开发基础教程1.2项目.资源和场景 如果使用Unity制作游戏,就一定会接触到项目(Project.资源(Asset)和场景(Scene).本节将依次介绍它们. 1.2.1  项目 ...

  6. Unity2D游戏开发基础教程1.2 项目、资源和场景

    Unity2D游戏开发基础教程1.2 项目.资源和场景 如果使用Unity制作游戏,就一定会接触到项目(Project.资源(Asset)和场景(Scene).本节将依次介绍它们. 1.2.1  项目 ...

  7. 如何做好游戏内实时语音体验

    游戏内语音沟通需求 早在2015年,艾媒咨询即有移动游戏社交相关数据统计:近40%的玩家因为社交因素选择一款游戏:15.6%的玩家因为一款游戏社交性差而选择离开.因此,如何提高游戏的社交属性已成为各大 ...

  8. unity2d游戏开发系列教程:一、环境安装

    从这篇文章开始,一步一步教大家从0开始通过2DGameKit项目进行2D游戏开发 第一步.环境安装 1.先使用手机下载Unity Connect并注册登陆 2.进入unity官网https://uni ...

  9. Unity 之 手把手教你实现自己Unity2D游戏寻路逻辑 【文末源码】

    Unity 之 手把手教你实现自己Unity2D游戏寻路逻辑 [文末源码] 前言 一,效果展示 二,场景搭建 三,代码逻辑 四,完善场景 五,使用小结 前言 还在看别人的寻路逻辑?保姆级教程,一步步教 ...

最新文章

  1. python多线程爬虫框架_普通爬虫vs多线程爬虫vs框架爬虫,Python爬对比
  2. 三阶段dea模型 matlab源程序,三阶段DEA模型SFA二阶段剔除过程
  3. python:filter用法
  4. 自动化测试学习之路--java 数组
  5. AI 时代,为何机器人公司无法盈利只能走向倒闭?
  6. Mongo 3.6.1版本Sharding集群配置
  7. (六十五)for循环
  8. 传智播客Java 方法
  9. 一、matpower安装流程
  10. SAS安装数据SID文件无效问题的解决
  11. W10笔记本电脑弄成WIFI
  12. Laravel文档梳理3、CSRF保护
  13. 用友T+改成IIS-网站报500.19错误代码0x8007000d问题解决
  14. Unity URP贴花系统的简单使用
  15. linux 查看进程的流量监控,Linux如何监控每个进程所消耗流量
  16. GPS主时钟|北斗卫星时钟|GPS卫星同步时钟|北斗时钟系统
  17. OpenCV+Python识别车牌和字符分割
  18. 2020山东计算机大赛裴鹏飞,裴鹏飞个人事迹加工作照(7页)-原创力文档
  19. 张艾迪(创始人):艾迪的学校与成长故事
  20. poj-3258 River Hopscotch (二分)

热门文章

  1. golang 报错is not in GOROOT
  2. c语言matlab混编max函数,Matlab与C++混编 – engin.h
  3. 牛客网js获取单行,多行输入
  4. 天气预报地区id列表
  5. 运行时读取PAK文件
  6. winmail 数据库设置_企业邮箱winmail设置方法
  7. B-Traveling Salesman Problem[CF-Gym-102134][2016-2017 7th BSUIR Open Programming Contest]
  8. unity能连jsp吗_使用JSPWiki丰富Unity-UPM包的使用
  9. 深度学习新贵?经验不限,月薪6万!
  10. c语言两个指针变量不可以,2.C语言指针变量