Unity LayerMask避坑笔记

        今天使用Physics2D.OverlapAreaNonAlloc进行物理检测时候,通过LayerMask.NameToLayer传入了int值的LayerMask,结果一直识别不到,经过Debug才找到问题,竟是LayerMask的“值”传输有问题,记录一下。

        直接贴代码输出结果,这里新增一个Layer: “TestLayer”,挂载脚本,运行,代码后面是对应的输出,如图:

        代码如下:

using UnityEngine;public class LayerTest : MonoBehaviour
{public LayerMask layerMask;  //=> TestLayerprivate void Awake(){Debug.Log(layerMask.value); // => 64 Debug.Log((int)layerMask);  // => 64Debug.Log(gameObject.layer); // => 6Debug.Log(LayerMask.NameToLayer("TestLayer"));  // => 6Debug.Log(LayerMask.GetMask("TestLayer"));  // => 64 }
}

        可以看到,对我们定义的LayerMask类型,无论是强转还是直接取值(前两句输出),获取到的值是枚举的实际值,是1<<6的结果, 而直接获取对象的Layer和通过LayerMask.NameToLayer

(第三,四句输出)获取到的值,都是对应在LayerManager里面的索引,这两个是完全不一样的值。而LayerMask.GetMask(第五句输出)获取到的值也是枚举的实际值,注意LayerMask.GetMask的传参的不定长的字符串数组,获取到的是传入的字符串转换成LyaerMask后做“和”运算的结果。

        Physics2D.OverlapAreaNonAlloc参数里需要的LyaerMask值是枚举的实际值,而不是索引值,所以不能使用LayerMask.NameToLayer获取,所以检测不到,应该使用LayerMask.GetMask获取。

        总结,在遇到LayerMask类型的参数时,要先确定是要索引值还是实际值,再确定如何获取,一般来讲,如果该参数包含多种LayerMask枚举时,那么该参数就一定是要取实际值而不是索引值的。物理引擎中,Layer检测一般是检测很多种类的,所以应该用实际值。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/17060.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫学习1

爬虫网站&#xff1a;All products | Books to Scrape - Sandbox 豆瓣网&#xff1a;豆瓣电影 Top 250 我们需要安装一个第三方库来解析爬取到的html内容&#xff0c;终端输入pip install bs4,安装成功后引入需要的模块 我们先爬取所有的价格 import requests from bs4 import…

HTML+CSS+JavaScript网页制作案例教程第2版-黑马程序员-第9章动手实践

文章目录 效果代码网盘 效果 代码 index.html <!doctype html> <html> <head> <meta charset"utf-8"> <title>通栏效果</title> <link rel"stylesheet" type"text/css" href"index.css"> …

linux系统更改SSH端口号配置

1.编写sshd.config cd /etc/ssh sudo cp sshd_config sshd_config.bak vim sshd_config2.重启服务 systemctl restart sshd 结束&#xff01;&#xff01;

【UE5.1 角色练习】08-物体抬升、抛出技能

前言 在上一篇&#xff08;【UE5.1 角色练习】08-传送技能&#xff09;的基础上继续实现控制物体抬升、抛出的功能。 效果 步骤 一、准备技能动画 1. 在项目设置中新建一个操作映射&#xff0c;这里命名为“Skill_GravityControl”&#xff0c;用按键4触发 2. 通过IK重定向…

aws emr启动standalone的flink集群

关键组件 Client&#xff0c;代码由客户端获取并做转换&#xff0c;之后提交给JobMangerJobManager&#xff0c;对作业进行中央调度管理&#xff0c;获取到要执行的作业后&#xff0c;会进一步处理转换&#xff0c;然后分发任务给众多的TaskManager。TaskManager&#xff0c;数…

【mysql】ubuntu下安装数据库

1更新软件包 sudo apt update //更新软件包2安装数据库 sudo apt install mysql-server//安装数据库注意后面mysql-server是个整体 3安全设置配置 sudo mysql_secure_installation//安全设置配置你要设置验证密码吗&#xff1f; 输入设置密码安全等级&#xff08;0,1&am…

nginx文件解析漏洞测试

环境条件:ubuntu14,已安装docker,docker pull ubuntu:14.04.5 一、Nginx配置 1、使用docker启动容器&#xff1a; docker run -itd --name ubuntu -p 8088:80 ubuntu:14.04.5 2、进入容器&#xff1a; docker exec -it ubuntu /bin/bash 3、然后使用以下语句安装相关环境…

C++基础:类的继承,public,private,protected

三种继承模式 在上图中: 派生继承 三种继承模式 protected模式中 父类的公有属性和保护属性的成员在子类中都会变为保护属性,只能通过父类或者子类的成员函数调用. 代码示例: #include <iostream> #include <string> using namespace std; //protected class per…

RBA认证是什么?申请RBA认证的流程是什么?

RBA认证&#xff0c;全称为Responsible Business Alliance&#xff08;责任商业联盟&#xff09;认证&#xff0c;是一个全球性的企业社会责任&#xff08;CSR&#xff09;倡议&#xff0c;旨在通过推动供应链中的社会和环境责任实践&#xff0c;确保供应链的可持续性。该认证要…

stm32cubeMX简单使用(轻松配置时钟和中断等)ST图形代码生成器

大大加快代码编写速度的图形编译工具 需要的准备材料 需要注意的几点操作 1&#xff0c;管理固件库和软件&#xff0c;方便对应不同系列的硬件 2&#xff0c;新建工程 3&#xff0c;整体流程 这个软件的本质是用来生成代码&#xff0c;方便前期初始化操作 4&#xff0c;对引…

暴雨公司受邀参加中国图象图形大会

5月24日至26日&#xff0c;备受瞩目的中国图象图形大会&#xff08;CCIG 2024&#xff09;在古都西安圆满落幕。本届大会主题为“图聚智生&#xff0c;象合慧成”&#xff0c;由中国图象图形学学会主办&#xff0c;空军军医大学、西安交通大学、西北工业大学承办&#xff0c;陕…

List基本使用(C++)

目录 1.list的介绍 2.list的使用 list的构造 list的size() 和 max_size() list遍历操作 list元素修改操作 assign()函数 push_front(),push_back 头插&#xff0c;尾插 pop_front() pop_back 头删尾删 insert()函数 swap()函数 resize()函数 clear()函数 list类数…

微信小程序图片懒加载如何实现?

微信小程序开发时&#xff0c;对于有图片的列表在加载时&#xff0c;为了用户体验更好&#xff0c;必需要对图片做懒加载。 如下图所示&#xff0c;页面在打开时&#xff0c;图片会按需加载&#xff0c;这样用户体验没有那么生硬。 以下将介绍图片懒加载的步骤&#xff1a; 1.…

什么?电脑内存又不够用了?我来拯救你!

什么&#xff1f;电脑内存又不够用了&#xff1f;我来拯救你&#xff01; 现在手机电脑的内存越来越大&#xff0c;各个公司开发的软件也是越来越肆无忌惮的挥霍这些内存空间&#xff0c;QQ 微信啥的动辄占用好几个 G 的内存。对于新购买的电脑来说&#xff0c;这也不是什么大…

构建镜像时候出现奇怪的现象时候

一、背景 构建镜像时候&#xff0c;昨天还好好的&#xff0c;今天出现奇怪的现象 二、查看现象 docker system df#cache 显示600G 三、步骤 这操作比较轻微&#xff0c;20以前的缓存清理掉 docker builder prune --filter until480h # 清除20填以前的构建缓

clickhouse——ck目录介绍

一、ck目录 1、/etc/clickhouse-server: 服务端的配置文件目录&#xff0c;包括全局配置config.xml和用户配置users.xml等。 2、/var/lib/clickhouse 默认的数据存储目录&#xff08;通常会修改默认路径配置&#xff0c;将数据保存到大容量磁盘挂载的路径&#xff09; 3、/var…

图片提取表格要怎么做?7个软件教你快速进行图片识别

图片提取表格要怎么做&#xff1f;7个软件教你快速进行图片识别 要从图片中提取表格&#xff0c;您可以使用以下七款软件来快速进行图片识别和表格提取&#xff1a; 1.一键识别王&#xff1a;这是一款专业的OCR&#xff08;光学字符识别&#xff09;软件&#xff0c;可以帮助…

重生之 SpringBoot3 入门保姆级学习(05、 Bean 装配)

重生之 SpringBoot3 入门保姆级学习&#xff08;05、 Bean 装配&#xff09; [TOC](重生之 SpringBoot3 入门保姆级学习&#xff08;05、 Bean 装配&#xff09;)2.2.1 通过 ioc.xml 文件配置2.1.2 通过 Configuration 注解配置2.2.4 测试 Bean 是否生效 新建 User 类 package…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十二)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 19节&#xff09; P19《18.ArkUI组件-页面路由》 以访问京东页面为例&#xff0c;访问过的页面并没有消失&#xff0c;而是进入了…

使用LabVIEW开发RFID读卡器程序

使用LabVIEW开发RFID读卡器程序&#xff0c;涵盖硬件选择、初始化、数据读取与处理的整个流程。通过详细的开发步骤和示例代码&#xff0c;展示LabVIEW在快速开发和调试RFID应用中的优势&#xff0c;使用户能有效实现RFID技术在各类项目中的应用。 工作原理 RFID&#xff08;…