【Cocos入门】物理检测

news2024/11/28 9:41:47

在这里插入图片描述

目录

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

一、物理检测的概念

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.coloradmin.cn/o/1450546.html

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

相关文章

Mysql运维篇(四) Xtarbackup--备份与恢复练习

一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。如有侵权,请留言,我及时删除! 前言 xtrabackup是Percona公司CTO Vadim参与开发的一款基于InnoDB的在线热备工具,具有…

【PyQt】11-QTextEdit、QPushButton

文章目录 前言一、文本输入-QTextEdit1.1 代码1.2 运行结果 二、QPushButton2.1.1 按钮上添加文本2.1.2 按键的弹跳效果2.1.3 两个信号可以绑定一个槽。2.1.4 带图标的按键运行结果 2.1.5 按键不可用以及回车默认完整代码2.2 单选按键控件运行结果 2.3 复选框(多选框…

free pascal:fpwebview 组件通过 JSBridge 调用本机TTS

从 https://github.com/PierceNg/fpwebview 下载 fpwebview-master.zip 简单易用。 先请看 \fpwebview-master\README.md cd \lazarus\projects\fpwebview-master\demo\js_bidir 学习 js_bidir.lpr ,编写 js_bind_speak.lpr 如下,通过 JSBridge 调用本…

shumei 滑块 qd参数仿写记录

在对qd参数进行仿写的过程中,由于缺失很多js的基础知识,导致进展一度非常的缓慢,并且不知道自己的方向是不是正确的方向。在不知道自己的方向是否正确的时候,这个时候自己的投入的努力都是畏首畏尾。大概是一种,不知道…

RabbitMQ如何保证可靠

0. RabbitMQ不可靠原因 消息从生产者到消费者的每一步都可能导致消息丢失: 发送消息时丢失: 生产者发送消息时连接MQ失败生产者发送消息到达MQ后未找到Exchange生产者发送消息到达MQ的Exchange后,未找到合适的Queue消息到达MQ后,…

【Deep Learning 1】神经网络的搭建

🌞欢迎来到PyTorch的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 📆首发时间:🌹2024年2月16日&a…

Flutter Android开发 梳理Google Material Design颜色体系

前言 做安卓开发(Kotlin语言),Flutter开发的人员应该都听说过谷歌一直推崇的Material Design,而Material Design Color是其推崇的颜色体系,具体来说,Material Design Color是一套旨在帮助设计师和开发者创…

问题:单层工业厂房柱子吊装时,其校正的内容包括( )。 #微信#经验分享#知识分享

问题:单层工业厂房柱子吊装时,其校正的内容包括(  )。 A、截面尺寸偏差 B、平面位置 C、标高 D、垂直度 E、柱的长度 参考答案如图所示

重磅更新!谷歌发布Gemini 1.5 Pro!多模态,1000K上下文!附Waitlist链接!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识…

[OPEN SQL] 修改数据

MODIFY语句用于修改数据库表中的数据 MODIFY拥有INSERT和UPDATE的操作,如果数据库表中不存在符合条件的数据则会添加该条新数据,反之数据库表中存在符合条件的数据则会更新该条数据 本次操作使用的数据库表为SCUSTOM,其字段内容如下所示 航…

【计算机网络】多路复用和多路分解

多路分解 demultiplexing 数据到达接收主机时,需要指定对应的套接字,所以在运输层报文段中放置了一些字段用于套接字的识别,从而将报文段定向到套接字,将运输层报文段数据交付到正确套接字的工作就是多路分解。多路复用 multiple…

day42 一个极简动画效果(复习相关属性)

<!DOCTYPE html> <html><head><title>动画页面</title><style>body {font-family: Arial, sans-serif;background-color: #f2f2f2;margin: 0;padding: 0;}.container {max-width: 800px;margin: 0 auto;margin-top: 100px;padding: 20px;b…

(N-144)基于微信小程序在线订餐系统

开发工具&#xff1a;IDEA、微信小程序 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术&#xff1a;vue、ElementUI、 Vant Weapp 服务端技术&#xff1a;springbootmybatisredis 本系统分微信小程序和…

ChatGPT重大升级:能自动记住用户的习惯和喜好,用户有权决定是否共享数据给OpenAI

OpenAI刚刚宣布了ChatGPT的一项激动人心的更新&#xff01; OpenAI在ChatGPT中新加了记忆功能和用户控制选项&#xff0c;这意味着GPT能够在与用户的互动中记住之前的对话内容&#xff0c;并利用这些信息在后续的交谈中提供更加相关和定制化的回答。 这一功能目前正处于测试阶…

基于PSO优化的LSTM多输入时序回归预测(Matlab)粒子群优化长短期神经网络时序回归预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、 部分代码展示&#xff1a; 四、完整代码数据下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matalb平…

视觉slam十四讲学习笔记(五)非线性优化

已经知道&#xff0c;方程中的位姿可以由变换矩阵来描述&#xff0c;然后用李代数进行优化。观测方程由相机成像模型给出&#xff0c;其中内参是随相机固定的&#xff0c;而外参则是相机的位姿。 目录 前言 一、状态估计问题 1 最大后验与最大似然 2 最小二乘的引出 二、非…

Kotlin基本语法3集合

1.List集合 1.1 只读List fun main() {val list listOf("Jason", "Jack", "Jacky")println(list.getOrElse(3){"Unknown"})println(list.getOrNull(3)?:"Unknown") } 1.2 可变List fun main() {val mutableList mutabl…

搭建 blender python api 的外部开发环境

以下都是为了不直接在 blender 的 script ide 里写脚本而做&#xff0c;直接在 blender 里写的话就没什么参考意义了。 首先是2个blender的设置选项&#xff0c;建议开启&#xff0c;会比较方便。 开发选项启用后&#xff0c;你在一些菜单上右键的话&#xff0c;会多出来 在线…

计算机网络——多媒体网络

前些天发现了一个巨牛的人工智能学习网站 通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff0c; 跳转到网站 小程一言 我的计算机网络专栏&#xff0c;是自己在计算机网络学习过程中的学习笔记与心得&#xff0c;在参考相关教材&#xff0c;网络搜素…

[职场] 面试失败的解压方式是什么 #经验分享#职场发展#知识分享

面试失败的解压方式是什么 1、心态调整&#xff1a;自我暗示、找人吐槽发泄情绪都是极佳的心态调整办法&#xff1b; 2、策略调整&#xff1a;当面对同一个岗位多次不成功的时候&#xff0c;需要我们调整策略&#xff0c;尝试去应聘相近的工作岗位&#xff1b; 3、总结提升&…