您现在的位置: 网站首页 / 网络收藏 / 正文

在Unity中使用LayerMask

作者: Azure 发布: 2018-6-20 分类: 网络收藏 阅读: 次 查看评论

Layers通常被摄像机用来渲染部分场景,和灯光照射部分场景使用。但是它们也可以用来做射线检测时忽略一些collder或Collision使用。

如何编辑Layers.

在代码中使用时如何开启某个Layers?答案是正确使LayerMask。

LayerMask mask = 1 << 你需要开启的Layers层。

LayerMask mask = 0 << 你需要关闭的Layers层。

例如:

LayerMask mask = 1 << 2; 表示开启Layer2。

LayerMask mask = 0 << 5;表示关闭Layer5。

LayerMask mask = 1<<2|1<<8;表示开启Layer2和Layer8。

LayerMask mask = 0<<3|0<<7;表示关闭Layer3和Layer7。

void Update ()  {  
    if (Input.GetMouseButtonDown(0)) {  
        // 只检测第6层  
        LayerMask mask1 = 1 << 6;  
        // 只不检测第7层  
        LayerMask mask2 = ~(1 << 7);  
        // 只检测第8层和第9层  
        LayerMask mask3 = (1 << 8)|(1 << 9);  
  
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);  
        RaycastHit hit;  
        if (Physics.Raycast(ray, out hit, mask1)) {  
            Debug.Log("test");  
        }  
    }  
  }


« 上一篇下一篇 » 原创文章,转载请注明出处!标签: Unity  LayerMask  

控制面板
网站分类
搜索
最新留言
友情链接