新人求教关于unity中layer层级的unity 设置层级问题

在Unity中使用层和标签概念从而避免碰撞
Objective 目标
这篇文章的主要目的是教你如何在Unity中同时使用Ignore Collision Using Layer和Tag Concept,使object1和object2发生碰撞,且可以避免与object3碰撞。
在Unity中,我们经常遇到碰撞问题。 如果我们希望一些游戏对象与另一个游戏对象发生碰撞,并避免同时与第三个游戏对象发生碰撞,那么在这种情况下,我们将使用图层和标签的概念。
这篇博客将教你如何使object1与object2发生碰撞,并避免同时与object3对象发生碰撞。
对此,Unity中有两个主要的概念
1. Layer 图层
2. Tag 标签
对于避免与同一场景中的第三个对象发生碰撞来说,上述两个概念非常有用。 所以,让我们从第一个概念-层开始。
SUsing Layer 图层的使用
Create Project 创建项目
创建一个Unity项目,并将3个sprites放入到Assets下的Sprites文件夹
1.2 Create Sprite 创建sprite
创建一个Sprite文件夹后,你可以放入任何3个你想作为对象的sprite。 以此为例,我已经放了3个sprite,分别是Ball,Green Pole和Red Pole。
我的目标是球应该与Red Pole碰撞,但不能与Green Pole碰撞。
1.3 Collision Detection 碰撞检测
现在,使用ctrl + s(cmd + s)将此场景保存为游戏场景。这时,还需要使用两个sprite,一个成为场景的背景并命名为BG,另一个作为所有对象站立的基地即Road。 现在为了碰撞检测,我们必须给所有的sprite加上collider以及rigidbody(刚体)。
为了将sprite放入Unity Hierarchy面板中,选择“Ball,Green Pole 以及 Red Pole,并在Inspector面板中使用“添加”组件,给予它们一个刚体以及合适的碰撞器,如box或circle。如下图所示。
1.4 Make 编辑脚本
现在,我们从编程开始,并为球的运动制作一个脚本: - 左,右,跳,分别使用左,右,上箭头键。 还可以使用添加组件将该脚本赋给球对象上。
上述脚本用于球的移动。 让我们按右箭头键,使球移动并将与green pole碰撞,且不会向前移动。 我们用up键向上跳,跳过green pole,它会与red pole碰撞。
我们的目标是球应该与red pole碰撞,但是避免与green pole碰撞。 为此,我们使用Layer Concept。
1.5 Make Layers 制作图层
使用图层描述按钮制作3个图层分别命名为No Collision,Collision以及Ball Layer
Now givedifferent layers to different objects like: 不同的物体分别赋予不同的图层
Ball && Ball Layer
Green Pole && No Collision
Red Pole && Collision-在Inspector面板中使用图层按钮
1.6 Project Setting 项目设置
现在打开 Edit &&Project setting && Physics 2D(如果项目是2D就这样做,否则就转到Physics处)显示层次结构如图所示。
1.7 Physics Setting Physics设置
现在,取消选中你不想碰撞的图层。 这里我们取消选中Ball Layer这样就无碰撞层,然后保存场景。 现在,球不会与green pole碰撞,但会与red pole碰撞。 来确认一下。
Step 2 Using Tag 使用标签
2.1 Make Tag 制作标签
使用与添加图层相同的标签按钮,制作一个名为NoCollide的标签。 还要给绿色green pole分配NoCollide标签。
2.2 Change in 改变脚本
打开使球运动的脚本,并制作一个名为OnCollisionEnter2D的方法/函数。 现在,球不会与green pole碰撞,但会与red pole碰撞。 试试看!
查找与整个项目不同的场景:
1. 使用图层概念
2. 使用标签概念
我希望您在碰撞中使用图层和标签概念时,会发现此博客非常有用。 如果您有任何关于Unity 3D中碰撞的问题,请给我们留言共同探讨哦。
有游戏开发的想法吗?
原文链接:/blog/ignore-collision-using-layer-and-tag-concept
蛮牛社区(<)分享最新的游戏研发和虚拟现实相关技术内容。
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点最近看别人写的Demo,里面这个Linecast字段的LayerMask参数看了半天也没看懂
void&Update()
&&&&&&&&//&The&player&is&grounded&if&a&linecast&to&the&groundcheck&position&hits&anything&on&the&ground&layer.
&&&&&&&&grounded&=&Physics2D.Linecast(transform.position,&groundCheck.position,&1&&&&LayerMask.NameToLayer(&Ground&));&&
&&&&&&&&//&If&the&jump&button&is&pressed&and&the&player&is&grounded&then&the&player&should&jump.
&&&&&&&&if(Input.GetButtonDown(&Jump&)&&&&grounded)
&&&&&&&&&&&&jump&=&true;
后来去官网看,半天也没个例子,还是google吧,在网上看到各路大神的解释,终于明白了,LayerMask实际上是一个位码操作,在Unity3d中Layers一共有32层,这个是不能增加或者减少的:
摘自官网:
Layers&are used throughout Unity as
a way to create groups of objects that share particular characteristics (see&&for
further details). Layers are primarily used to restrict operations such as raycasting or rendering so that they are only applied to the groups of objects that are relevant. In the manager, the first eight layers are defaults used by Unity and are not editable.
However, layers from 8 to 31 can be given custom names just by typing in the appropriate text box. Note that unlike tags,
the number of layers cannot be increased.
所以那个LayerMask实际上是用Int32的32个位来表示每个层级,当这个位为1时表示使用这个层,为0时表示不用这个层。
回到上面的例子:
1&&&&LayerMask.NameToLayer(&Ground&)
这一句实际上表示射线查询只在Ground所在这个层级查找。
再来看看NameToLayer是干嘛的。
官网解释:
Given a layer name, returns the layer index as defined by either a Builtin or a User Layer in the&.
是返回的该名字所定义的层的层索引,注意是从0开始。
本文已收录于以下专栏:
相关文章推荐
Unity中是用int32来表示32个Layer层。int32表示二进制一共有32位(0—31)。LayerMask实际上是用Int32的32个位来表示每个层级,当这个位为1时表示使用这个层,为0时表...
unity3d中如何使用layerMask参数:
Raycast (ray : Ray, out hitInfo : RaycastHit, distance : float = Mathf.Inf...
射线:射线是3D世界中一个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射&#160;。用途:在unity中射线应用范围比较广,&#160;多用于碰撞检测(如:子弹飞行是否击中目标)、角色...
完美的内容是用来使用的,不管您的内容多么精彩,如果它们很难访问,用户照样会离开,易用性不仅仅牵扯到技术,更多的是良好的 Web 创作习惯,易用性包含34条规则,它们是:  只使用成熟,简单,兼容的技术...
Unity中是用int32来表示32个Layer层。int32表示二进制一共有32位(0—31)。
在Unity中可编辑的Layer如下图所示:
在Unity中每个GameObject都有Lay...
void Update ()
if (Input.GetMouseButtonDown(0)) {
// 只检测第6层
LayerMask mask1 = 1 && 6;
在Unity中用int32数据类型来表示32个Layer层,int32表示二进制一共有32位(0—31)。在Unity中每个GameObject都有Layer属性,默认的Layer都是Default。...
层和层的掩码是游戏中重要的角色,在Unity中用int32数据类型来表示32个Layer层。int32表示二进制一共有32位(0—31)。
在Unity中每个GameObject都有Layer属...
这一篇是纯技术讨论,看过我前面文章的童鞋应该清楚,我的奔跑是靠鼠标响应的,鼠标点到哪就跑到哪,后来又有了界面,麻烦就来了,我的界面竟然能点 穿,我不希望点界面的时候还能点到界面后面的地面上,角色傻不拉...
他的最新文章
讲师:汪剑
讲师:刘道宽
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)扫一扫,访问微社区
后使用快捷导航没有帐号?
签到成功!您今天第{todayrank}个签到,签到排名竞争激烈,记得每天都来签到哦!已连续签到:{constant}天,累计签到:{days}天
当前位置: &
_____________________________________________________________________________________________________________
问答求助版块规则:
  1、问题尽量描述清楚
& && &2、代码要放在代码块里
& && &3、附件最好放到云盘,然后把链接放到TXT文档里,上传TXT文档。【最好没有附件,你懂得】
& && &4、本版块回复不得无意义,如:顶、呵呵、不错......以及擦边!【真的会扣分的哦】严重者,封IP!
& && &5、问题得到解决,请选择最佳答案。
& && &6、若问题是你自己解决了,可以联系管理员,返还蛮牛币,写下你的答案,另有蛮牛币奖赏。
_____________________________________________________________________________________________________________
查看: 1959|回复: 3
untiy3d 里面的设置面板里面
“layer”和”sorting layer“是什么区别。
本帖为抢楼帖,欢迎抢楼!&
273/150排名<font color="#FF昨日变化14主题帖子积分
初来乍到, 积分 73, 距离下一级还需 77 积分
初来乍到, 积分 73, 距离下一级还需 77 积分
在线时间10 小时
untiy3d 里面的设置面板里面&&“layer”和”sorting layer“是什么区别。 这两个地方都可以新建层,但是不知道分别把精灵放到这两个层里面有什么区别。 在后面的使用当中,这两个层有什么作用。谢谢。
每日推荐:
61138/1500排名<font color="#FF昨日变化1主题帖子积分
蛮牛粉丝, 积分 1138, 距离下一级还需 362 积分
蛮牛粉丝, 积分 1138, 距离下一级还需 362 积分
蛮牛币2857
在线时间230 小时
按照我的理解,layer是控制遮挡剔除,比如说物理碰撞控制,光照控制等;而sorting layer是控制渲染顺序
每日推荐:
16排名2昨日变化主题帖子积分
在线时间2616 小时
layer主要通过光线投射来选择性地忽略碰撞器,或者添加碰撞功能。
而sorting layer就是一个渲染层级的顺序的控制。
决定Unity渲染关系的层级顺序是:
sorting layer
sorting order
每日推荐:
273/150排名<font color="#FF昨日变化14主题帖子积分
初来乍到, 积分 73, 距离下一级还需 77 积分
初来乍到, 积分 73, 距离下一级还需 77 积分
在线时间10 小时
layer主要通过光线投射来选择性地忽略碰撞器,或者添加碰撞功能。
而sorting layer就是一个渲染层级的顺 ...
谢谢,请问一下,我把一个精灵对象的pivot 轴点移动到离它较远的地方了,这样它的position信息就偏移了。怎么才能,把pivot调整回来到精灵中心啊。我一拖动,全部就移动了。
每日推荐:
社区QQ达人
使用QQ帐号登录论坛的用户
累积数量不足1000蛮牛币
游戏蛮牛QQ群会员
加入游戏蛮牛官方QQ群
连续签到30天新人求教关于游戏存档的问题【unity3d吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:77,327贴子:
新人求教关于游戏存档的问题收藏
我知道要用PlayerPrefs类里的函数保存和读取数据,但是具体需要保存什么数据呢?是一个第三人称的游戏,想要实现在一些点自动存档,角色死亡之后自动读取上次的存档位置。我需要保存角色的坐标吗?有没有具体的代码示例可以用来学习一下呢? 求助!谢谢谢谢
江苏盘锦天燃气模温机,一台省得让你怀疑人生的燃气锅炉
看你,坐标,拥有的武器列表,子弹数量等等!保存位置的话你想它创建后在哪就保存哪里的位置!
把坐标已string保存
登录百度帐号推荐应用新人刚学unity,求教问题_unity吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:24,036贴子:
新人刚学unity,求教问题收藏
刚刚学通过脚本控制物体移动,为啥我移动时会出现拖影(见图片)?是我显卡问题还是设置问题。
登录百度帐号推荐应用}

我要回帖

更多关于 unity 设置layer 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信