【Unity2D游戏】实现实时的正确的遮挡关系(引擎自带功能)
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游戏】实现实时的正确的遮挡关系(引擎自带功能)相关推荐
- Unity2D游戏开发和C#编程大师班
本课程采用现代游戏开发的最新内容和最新技术(Unity 2D 2022) 学习任何东西的最好方法是以一种真正有趣的方式去做,这就是这门课程的来源.如果你想了解你看到的这些不可思议的游戏是如何制作的,没 ...
- unity2d游戏开发系列教程:四、一个2D游戏所需要的主要功能(游戏框架)
目录 unity2d游戏开发系列教程:一.环境安装 unity2d游戏开发系列教程:二.新建工程并熟悉Unity编辑器常用功能 unity2d游戏开发系列教程:三.场景布置,增加怪物和机关 原文下载 ...
- unity2d游戏开发系列教程:三、场景布置,增加怪物和机关
目录 unity2d游戏开发系列教程:一.环境安装 unity2d游戏开发系列教程:二.新建工程并熟悉Unity编辑器常用功能 第一节.场景草地布置 先查看一下资源文件里都有什么,一会就要用到的 打开 ...
- unity2d游戏开发系列教程:二、新建工程并熟悉Unity编辑器常用功能
目录 unity2d游戏开发系列教程:一.环境安装 第一步.打开项目 耐心等待一小会 工程界面 第二步.创建第一个场景(第一关)进行试玩 点击图中标号1的运行按钮,即可简单试玩感受,操作如下 移动A, ...
- Unity2D游戏开发基础教程1.2项目、资源和场景
Unity2D游戏开发基础教程1.2项目.资源和场景 如果使用Unity制作游戏,就一定会接触到项目(Project.资源(Asset)和场景(Scene).本节将依次介绍它们. 1.2.1 项目 ...
- Unity2D游戏开发基础教程1.2 项目、资源和场景
Unity2D游戏开发基础教程1.2 项目.资源和场景 如果使用Unity制作游戏,就一定会接触到项目(Project.资源(Asset)和场景(Scene).本节将依次介绍它们. 1.2.1 项目 ...
- 如何做好游戏内实时语音体验
游戏内语音沟通需求 早在2015年,艾媒咨询即有移动游戏社交相关数据统计:近40%的玩家因为社交因素选择一款游戏:15.6%的玩家因为一款游戏社交性差而选择离开.因此,如何提高游戏的社交属性已成为各大 ...
- unity2d游戏开发系列教程:一、环境安装
从这篇文章开始,一步一步教大家从0开始通过2DGameKit项目进行2D游戏开发 第一步.环境安装 1.先使用手机下载Unity Connect并注册登陆 2.进入unity官网https://uni ...
- Unity 之 手把手教你实现自己Unity2D游戏寻路逻辑 【文末源码】
Unity 之 手把手教你实现自己Unity2D游戏寻路逻辑 [文末源码] 前言 一,效果展示 二,场景搭建 三,代码逻辑 四,完善场景 五,使用小结 前言 还在看别人的寻路逻辑?保姆级教程,一步步教 ...
最新文章
- python多线程爬虫框架_普通爬虫vs多线程爬虫vs框架爬虫,Python爬对比
- 三阶段dea模型 matlab源程序,三阶段DEA模型SFA二阶段剔除过程
- python:filter用法
- 自动化测试学习之路--java 数组
- AI 时代,为何机器人公司无法盈利只能走向倒闭?
- Mongo 3.6.1版本Sharding集群配置
- (六十五)for循环
- 传智播客Java 方法
- 一、matpower安装流程
- SAS安装数据SID文件无效问题的解决
- W10笔记本电脑弄成WIFI
- Laravel文档梳理3、CSRF保护
- 用友T+改成IIS-网站报500.19错误代码0x8007000d问题解决
- Unity URP贴花系统的简单使用
- linux 查看进程的流量监控,Linux如何监控每个进程所消耗流量
- GPS主时钟|北斗卫星时钟|GPS卫星同步时钟|北斗时钟系统
- OpenCV+Python识别车牌和字符分割
- 2020山东计算机大赛裴鹏飞,裴鹏飞个人事迹加工作照(7页)-原创力文档
- 张艾迪(创始人):艾迪的学校与成长故事
- poj-3258 River Hopscotch (二分)
热门文章
- golang 报错is not in GOROOT
- c语言matlab混编max函数,Matlab与C++混编 – engin.h
- 牛客网js获取单行,多行输入
- 天气预报地区id列表
- 运行时读取PAK文件
- winmail 数据库设置_企业邮箱winmail设置方法
- B-Traveling Salesman Problem[CF-Gym-102134][2016-2017 7th BSUIR Open Programming Contest]
- unity能连jsp吗_使用JSPWiki丰富Unity-UPM包的使用
- 深度学习新贵?经验不限,月薪6万!
- c语言两个指针变量不可以,2.C语言指针变量