【Cocos入门】物理检测

在这里插入图片描述

目录

  • 一、物理检测的概念
  • 二、点测试
  • 三、矩形测试
  • 四、射线测试

一、物理检测的概念

CoCos中,物理检测也是物理系统的一部分,它不是用于检测物体的物理特性的,而是用来查询物体的(比如某个地方是否存在物理碰撞体)。其又分成:点检测、矩形检测和射线检测。

二、点测试

点测试将测试是否有碰撞体会包含一个世界坐标系下的点,如果测试成功,则返回一个包含这个点的碰撞体。注意:如果有多个碰撞体同时满足条件,点检测只会返回一个随机的结果,
点测试的用法:

let physicsCollider =cc,director.getPhysicsManager().testPoint(point);

点测试只能用于测试 type=dynamic 的刚体。
示例:

    manager:cc.PhysicsManager;onLoad(){this.manager=cc.director.getPhysicsManager();this.manager.enabled = true;}start () {//点测试let collider = this.manager.testPoint(cc.v2(200,200));if(!collider){cc.log("没有检测到碰撞体");}else{cc.log("name="+collider.node.name)}}

三、矩形测试

矩形测试将测试指定的一个世界坐标系下的矩形,如果一个碰撞体的包围盒与这个矩形有重叠部分,则这个碰撞体会被添加到返回列表中。
矩形测试的用法:

let colliders = cc,director.getPhysicsManager() .testAABB(rect);

并且和点测试一样,也只能检测dynamic类型的碰撞体。
示例:

    manager:cc.PhysicsManager;onLoad(){this.manager=cc.director.getPhysicsManager();this.manager.enabled = true;}start () {//矩形测试let collider = this.manager.testAABB(cc.rect(0,0,200,200));if(collider.length == 0){cc.log("没有检测到碰撞体");}else{for(let col of collider){cc.log("name="+col.node.name)}}}

四、射线测试

射线测试用来检测给定的线段穿过那些碰撞体,我们还可以获取到碰撞体在线段穿过碰撞体的那个点的法线向量和其他一些有用的信息。
用法如下:

let results = cc.director.getPhysicsManager().rayCast(p1, p2, type);

这里,对参数进行一下说明:

  1. p1,p2是线段的起点和终点
  2. type是射线测试的检测类型,包含四种类型:
  • cc.RayCastType.AIl:检测射线路径上的所有碰撞体,检测到的结果顺序不是固定的,效率慢;
  • cc.RayCastType.AllClosest:检测射线路径上的所有碰撞体,但是会对返回值进行删选,只返回每一个碰撞体距离射线起点最近的那个点的相关信息,效率最慢;
  • cc.RayCastType.Any:检测射线路径上任意的碰撞体,一旦检测到任何碰撞体,将立刻结束检测其他的碰撞体,效率最快;
  • cc.RayCastType.Closest:检测射线路径上最近的碰撞体,这是默认值,稍慢;

示例:

    manager:cc.PhysicsManager;onLoad(){this.manager=cc.director.getPhysicsManager();this.manager.enabled = true;}start () {//射线测试let collider = this.manager.rayCast(cc.v2(0,0),cc.v2(400,400),cc.RayCastType.AllClosest); if(collider.length == 0){cc.log("没有检测到碰撞体");}else{for(let col of collider){cc.log("name="+col.collider.node.name)cc.log("point="+col.point);cc.log("======")}}}

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

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

相关文章

关于VIT(Vision Transformer)的架构记录

在VIT模型设计中,尽可能地紧密遵循原始的Transformer模型(Vaswani等人,2017年)。这种刻意简化的设置的一个优势是,可扩展的NLP Transformer架构及其高效的实现几乎可以即插即用。 图:模型概述。我们将图像分…

「优选算法刷题」:和可被K整除的子数组

一、题目 给定一个整数数组 nums 和一个整数 k ,返回其中元素之和可被 k 整除的(连续、非空) 子数组 的数目。 子数组 是数组的 连续 部分。 示例 1: 输入:nums [4,5,0,-2,-3,1], k 5 输出:7 解释&…

《合成孔径雷达成像算法与实现》Figure6.13

clc clear close all参数设置 距离向参数设置 R_eta_c = 20e3; % 景中心斜距 Tr = 2.5e-6; % 发射脉冲时宽 Kr = 20e12; % 距离向调频率 alpha_os_r = 1.2; % 距离过采样率 Nrg = 320; % 距离线采样数 …

多模态基础---BERT

1. BERT简介 BERT用于将一个输入的句子转换为word_embedding,本质上是一个transformer的Encoder。 1.1 BERT的两种训练方法 预测被遮挡的单词预测两个句子是否是相邻的句子 1和2是同时训练的 1.1 BERT的四种用法 预测句子的类别:输入一个句子&…

鸿蒙开发系列教程(二十一)--轮播处理

轮播处理 Swiper本身是一个容器组件,当设置了多个子组件后,可以对这些子组件进行轮播显示 在自身尺寸属性未被设置时,会自动根据子组件的大小设置自身的尺寸 参数: 通过loop属性控制是否循环播放,该属性默认值为tr…

【深入理解DETR】DETR的原理与算法实现

1 DETR算法概述 ①端到端 ②Transformer-model 之前的方法都需要进行NMS操作去掉冗余的bounding box或者手工设计anchor, 这就需要了解先验知识,增加从超参数anchor的数量, 1.1 训练测试框架 一次从图像中预测n个object的类别 训练阶段我们…

【C语言】指针练习篇(下),深入理解指针---指针练习题【图文讲解,详细解答】

欢迎来CILMY23的博客喔,本期系列为【C语言】指针练习篇(下),深入理解指针---指针练习题【图文讲解,详细解答】,图文讲解指针练习题,带大家更深刻理解指针的应用,感谢观看,支持的可以…

企业计算机服务器中了mkp勒索病毒怎么办?Mkp勒索病毒解密处理

随着网络技术的不断发展,企业的生产运营也加大了步伐,网络为企业的生产运营提供了强有力保障,但网络是一把双刃剑,给企业带来便利的同时也为企业带来了严重的数据威胁。春节期间,云天数据恢复中心接到很多企业的值班人…

CCF编程能力等级认证GESP—C++2级—20231209

CCF编程能力等级认证GESP—C2级—20231209 单选题(每题 2 分,共 30 分)判断题(每题 2 分,共 20 分)编程题 (每题 25 分,共 50 分)小杨做题小杨的 H 字矩阵 参考答案单选题判断题编程题1编程题2 …

嵌入式中全面解析 SPI 通信协议方法

SPI 的英文全称为 Serial Peripheral Interface,顾名思义为串行外设接口。SPI 是一种同步串行通信接口规范,主要应用于嵌入式系统中的短距离通信。该接口由摩托罗拉在20世纪80年代中期开发,后发展成了行业规范。 SPI 是一种高速的、全双工的…

第三十回 张都监血溅鸳鸯楼 武行者夜走蜈蚣岭-python可接受任意数量参数的函数

武松回到孟州城,来到张都监后花园墙外,这是一个马院,问清楚后槽张团练他们三人还在鸳鸯楼吃酒,直接一刀杀了。武松从后门这里爬过墙,来到了厨房,将两个还在服侍的丫环杀了。 武松认得路,蹑手蹑…

Photoshop 中的“彩蛋”

在 Photoshop 中隐藏了几个“彩蛋” Easter Eggs,是开发者留下的小秘密或玩笑功能,也许是他们在紧张的开发过程中的一种自我调节吧,就如复活节彩蛋一样,同样也可以给 Photoshop 的用户们带来一点小“惊喜”。 这些彩蛋通常以有趣的…