Unity中LayerMask层的规律
来源:互联网 发布:企业网站如何做好优化 编辑:程序博客网 时间:2024/06/06 07:28
using UnityEngine;using System.Collections;public class Layer : MonoBehaviour { public int layerMask=0; //定义一个int类型的变量,用来存储碰撞的层void Start () {}void Update () { //从摄像机发射一条射线到屏幕上的一点,这个点我们在括号中定义的是我们鼠标点击点击的一个点 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //是一个结构体,用于存储射线碰撞返回的信息 RaycastHit hit; //第一个参数是我们的射线ray,第二个参数是返回的碰撞信息,第三个参数是摄像能够碰撞到的距离,第四个参数就是我们的碰撞层 如果返回真就是执行下面的代码 if (Physics.Raycast(ray,out hit,100,layerMask)) { Debug.Log("名字是"+hit.collider.gameObject); }}}
在场景中建了五个物体
UIPlan 对应的Layer层是UI;
DefaultCube 对应的层是Default;
TransparentFXSphere 对应的层是TransparentFX;
WaterCapsule 对应的层是Water
IgnoreRaycastCylinder 对应的层是IgnoreRaycast
当我在测试的时候输入不同的mask值得出的结果
mask 能被射线检测到的物体
0 无
1 2的0次幂 DefaultCube
2 2的1次幂 TransparentFXSphere
3 mask1+2 DefaultCubeTransparentFXSphere
4 2的2次幂 IgnoreRaycastCylinder
5 mask1+4 DefaultCube IgnoreRaycastCylinder
.....
8 2的3次幂 无
........
16 2的4次幂 WaterCapsule
....
32 2的5次幂 UIPlan
总结可以得出在面板中UseLayer后面跟的值可以求出对应的层 怎么知道是2的几次幂,这个几次就是面板中这个层Layer后面所跟的数值。
如果想同时检测多个层时,就把多个层的mask值相加。就可以同时检测到多个层了。
这是我今天学到的,如果有不对的地方,还请大家指正。谢谢!
- Unity中LayerMask层的规律
- Unity中LayerMask的学习手记
- 【Unity】射线中LayerMask参数的使用方式
- Unity LayerMask的位运算
- 关于Unity的LayerMask的实现原理
- unity射线碰撞检测+LayerMask的使用
- Unity Physics.Raycast的参数layermask不起作用
- Unity LayerMask用法
- Unity Layers 与 LayerMask
- [Unity]Ray射线物理检测碰撞和LayerMask的使用
- Unity Physics.Raycast 之 layerMask
- U3D开发学习之路--RayCast中layerMask的使用
- LayerMask的使用
- Camera的LayerMask
- LayerMask 的使用
- Unity3D LayerMask 的使用
- unity Physics.Raycast 函数 LayerMask用法测试
- Unity3D Raycast, LayerMask的设置
- 简单统计报表例子(存储过程)
- Linux常用命令
- 【机器学习算法实现】logistic回归__基于Python和Numpy函数库
- 简单的轮播图
- 美丽传奇,WiFi之母
- Unity中LayerMask层的规律
- mybatis调用oracle存储过程返回结果集
- 个人总结15
- oracle11g rac 如何删除损坏节点并添加新节点
- GitHub上传项目
- 1002. 写出这个数 (20)
- 开发过程中主要的三种加密方式
- HTTPS : HTTPS原理详解
- struts数据校验的两种方式