Godot 3.4.2

判断碰撞类型的节点是否在某个层,或者掩码是否能检测到哪个层的方法,这里就需要用到二进制的位运算了,代码如下

##  是否在这个碰撞层中
static func is_in_layer(node: CollisionObject2D, layer: int) -> bool:return node.collision_layer & layer == layer##  是否在这个碰撞掩码中
static func is_in_mask(node: CollisionObject2D, mask: int) -> bool:return node.collision_mask & mask == mask##  减去这一层碰撞
static func sub_layer(node: CollisionObject2D, layer: int):node.collision_layer -= (node.collision_layer & layer)##  减去这一层掩码
static func sub_mask(node: CollisionObject2D, mask: int):node.collision_mask -= (node.collision_mask & mask)##  加上这一层碰撞
static func add_layer(node: CollisionObject2D, layer: int):node.collision_layer |= layer##  加上这一层掩码
static func add_mask(node: CollisionObject2D, mask: int):node.collision_mask |= mask

通过位运算直接得到是否包含有对应碰撞层或掩码层的值,有兴趣的朋友可以百度“位运算”

里面的第一个参数 node 是要检测的节点, KinematicBody2DRigidBody2DArea2D 这种碰撞对象,第二个参数即为这些节点的 collision_layercollision_mask 属性


那么要得到他们的值很简单,使用位运算进行左移运算

比如上面在第一层,那么就是在 1 << 0
如果节点是在上面的第 5 层,那么直接用 1 << (5 - 1) ,也就是 1 << 4 即可得到
如果节点是在上面的第 6 层,那么直接用 1 << (6 - 1),也就是 1 << 5 即可得到

就是 1 << (上面点亮的数字 - 1) 就是那一层的值

【Godot】节点的碰撞与碰撞掩码的计算相关推荐

  1. 碰撞,处理碰撞,发射 Learn Unreal Engine (with C++)

    本文使用打砖块游戏举例 碰撞,处理碰撞 碰撞就相当于一个Actor进入另一个Box中,用这个思路就可以处理碰撞了 OnComponentBeginOverlap 当某些内容开始重叠此组件时调用的事件, ...

  2. 【Unity】Unity中获得碰撞体碰撞的位置

    有时间的直接看sprite slicer这个插件的代码,原理也是发射线检测,代码逻辑什么的比下面的文章来的好的多,如果有空我也可以整理一下. 在纯物理环境中,为了获得碰撞体碰撞的位置,我们可以使用Co ...

  3. 基于Matlab simulink平台搭建IEEE15节点仿真模型,对电力系统进行潮流计算

    IEEE15节点系统Simulink仿真 1.基础功能:基于Matlab simulink平台搭建IEEE15节点仿真模型,对电力系统进行潮流计算 2.拓展功能: 可在该IEEE15节系统仿真模型上进 ...

  4. 图算法(一):Pagerank算法(网页排名算法)【适用场景:网页排序、社交网络重点人物发掘等】【一种由搜索引擎根据网页(节点)之间相互的超链接进行计算的技术,用来体现网页(节点)的相关性和重要性】

    一.概述 PageRank算法又称网页排名算法,是一种由搜索引擎根据网页(节点)之间相互的超链接进行计算的技术,用来体现网页(节点)的相关性和重要性. 如果一个网页被很多其他网页链接到,说明这个网页比 ...

  5. 散列碰撞_散列中的碰撞和碰撞解决技术

    散列碰撞 Prerequisite: Hashing data structure 先决条件: 哈希数据结构 碰撞 (Collisions) Hash functions are there to m ...

  6. 利用域名(host碰撞)碰撞实现从任何地方发起中间人攻击(理论篇)

    简述 相比大家对中间人劫持的攻击相当了解,尤其是局域网中的中间人攻击.有很多的利用手段比如ARP投毒.DNS投毒.ICMP重定向等等,这类的文章在网上非常的多.但是今天要讨论的是一个全新的中间人攻击方 ...

  7. android 吐泡泡动画,android仿摩拜贴纸碰撞|气泡碰撞

    转载请注明出处 准备 气泡碰撞最重要的就是边缘检测,气泡的运动涉及到重力,方向,重心,线速度,角速度,,等等一系列因素,想要在android 用view描述现实世界中的气泡实在是难度很大.网上查找资料 ...

  8. android仿摩拜贴纸碰撞|气泡碰撞

    转载请注明出处 准备 气泡碰撞最重要的就是边缘检测,气泡的运动涉及到重力,方向,重心,线速度,角速度,等等一系列因素,想要在android 用view描述现实世界中的气泡实在是难度很大.网上查找资料后 ...

  9. crc32碰撞_hash碰撞的概率和可能性比你直觉中大得多

    注:这篇文章源自我10年前写的博客,今天看到有人谈密码安全的,再发一遍和大家讨论下.我发现哪怕10年后,这文章也没过时,很多人还是没拎清 冲突概率和样本空间的关系. 前段时间跟某大牛叽歪的时候,被提到 ...

最新文章

  1. localStorage和cookie的跨域解决方案
  2. 关于网络线与电话线共用之体会
  3. Linux 内核101:[译]并发导论
  4. Let's Fork | 11 款 Github 最新「机器学习」开源项目
  5. if 需求:小于或等于18未成年,小于或等于30青年人,其余都是老年人
  6. scala中的case中的变量为啥没有定义
  7. 用jekyll制作高大上的网站(二)——实际应用
  8. JavaScript字符串判断某个字符是否存在
  9. go token验证_golang jwt+token验证的实现
  10. Spring Boot 整合监听器
  11. NTUSER.DAT
  12. Shell脚本调用阿里云API实现DDNS动态域名解析
  13. oracle ebs fa_category_books,FA有用的脚本 - Oracle EBS R12 - ITPUB论坛-中国专业的IT技术社区...
  14. 佛珠的颗数有什么讲究
  15. html alert属性可以自定义,Html自定义alert,confirm弹窗
  16. 可移动文物快速三维建模
  17. android 系统的切图方式_UI设计规范一Android尺寸单位换算及切图规范
  18. 智能体的奇幻漂流之“成都折叠”篇
  19. matlab 设置position 位置 /xlabel/legend位置的设置方式
  20. PostgreSQL中删除的数据能否恢复

热门文章

  1. java开发入门实验报告_Java实验二实验报告 20135108 李泽源
  2. 微信5.0即将横“扫”一切
  3. 人事管理系统 v4.1.8(源码)
  4. Dockers-搭建本地私有仓库
  5. dockers 后台启动
  6. Java,完全一头雾水,求大shen们指点
  7. idea中src/main/resources目录下的applicationContext.xml文件访问src/main/webap目录下的配置文件
  8. Arduino测试一块5路带自锁开关输入模块
  9. PDF不能打印怎么办?
  10. 学习就是这样一条时而郁郁寡欢,时而开怀大笑的路