【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.mzph.cn/news/683745.shtml

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

相关文章

编程和计算机基础

编程 编程:就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。 计算机程序:是计算机所执行的一系列的指令集合,而程序全部都是用我们所掌握的语言来编写的,所以人们控制计算机一…

云备份项目:在云端保护您的数据【一、初识】

桃李不言,下自成蹊 文章目录 项目简介项目设计方案服务端功能划分客户端功能划分 项目环境搭建环境准备第三方库JsonCppbundle数据压缩库httplib 总结 ☘️项目源代码:云备份 ☘️云备份专栏:云备份 项目简介 云备份系统是一个自动化的备份解…

Spring 事务原理总结四

作为一名认知有限的中国人,我对年的喜爱,胜过其他一切,因为它给了我拒绝一切的合理理由。每到这个时候,我都会用各种理由来为自己的不作为开脱,今年亦是如此。看着频频发出警报的假期余额,我内心的焦躁变得…

【优化数学模型】1. 基于Python的线性规划问题求解

【优化数学模型】1. 基于Python的线性规划问题求解 一、线性规划问题1.概述2.三要素 二、示例:药厂生产问题三、使用 Python 绘图求解线性规划问题1.绘制约束条件2.绘制可行域3.绘制目标函数4.绘制最优解 四、使用 scipy.optimize 软件包求解线性规划问题1.导入库2.…

CAN通讯协议学习

介绍 它是一种异步通讯,can_high和can_low两条线利用的是电位差传输信号,抗干扰能力强,但是必须要有can控制器如TJA1050(我的开发板) 当 CAN 节点需要发送数据时,控制器把要发送的二进制编码通过 CAN_Tx 线…

数仓建模—数据网格

数据网格 随着数字化时代的到来,近几年数据领域的新技术概念不断涌现,无论是数据湖、湖仓一体、流批一体、存算一体、数据编织抑或数据网格,很多还爬上了Gartner曲线,其中数据网格备受关注,数据网格从字面意思来看挺抽象的,会劝退很多人,但当你深入去理解这个概念时,才…

wordpress好的网站主题

有什么好的网站主题,都分享在这里了。 蓝色风格的wordpress模板,好的wordpress网站主题,需要既好看,又好用。 https://www.zhanyes.com/qiye/6305.html 血红色的好看的wordpress主题,布局经典,设计好的&am…

基于laravel开发的开源交易所源码|BTC交易所/ETH交易所/交易所/交易平台/撮合交易引擎

开源交易所,基于Laravel开发的交易所 | BTC交易所 | ETH交易所 | 交易所 | 交易平台 | 撮合交易引擎。本项目有完整的撮合交易引擎源码、后台管理(后端前端)、前台(交易页面、活动页面、个人中心等)、安卓APP源码、苹果…

宝宝起名神器小程序源码/支持多种流量主模式

还不知道怎么给虎宝宝取名字么?那么这款小程序源码就可以帮到你了,这款小程序支持输入姓氏自动起名。 不满意还可以点击换一换来找到满意的,支持起两个字或者三个字的名字。另外也给该款小程序添加了几个流量主位置!!…

react渲染流程是怎样的

整体流程: react的核心可以用uifn(state)来表示,更详细可以用: const state reconcile(update); const UI commit(state);上面的fn可以分为如下一个部分: Scheduler(调度器): 调度任务&…

【教程】Kotlin语言学习笔记(二)——数据类型(持续更新)

写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 【Kotlin语言学习】系列文章 第一章 《认识Kotlin》 第二章 《数据类型》 文章目录 【Kotlin语言学习】系列文章一、基本数据…

Python算法题集_二叉树的中序遍历

Python算法题集_二叉树的中序遍历 题94:1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【直接递归】2) 改进版一【函数递归】3) 改进版二【迭代遍历】 4. 最优算法 本文为Python算法题集之一的代码示例 题94: 1. 示例说…

【使用IDEA总结】01——新增作者信息、方法参数返回值

[TOC](目录) 1.类新增作者信息 打开IDEA的Settings,Editor->Code Style->File and Code Templates->Includes->File Header,输入以下作者信息,作者名更换为自己的即可,操作如下图所示 /*** Author Linhaipeng* Date…

MySQL 基础知识(三)之数据库操作

目录 1 显示当前时间、用户名、数据库版本 2 查看已有数据库 3 创建数据库 4 使用数据库 5 查看当前使用的数据库 6 查看当前数据库信息 7 查看数据库编码 8 修改数据库信息 9 删除数据库 10 查看最大连接数 11 查看数据库当前连接数,并发数 12 查看数据…

C++类和对象-C++对象模型和this指针->成员变量和成员函数分开存储、this指针概念、空指针访问成员函数、const修饰成员函数

#include<iostream> using namespace std; //成员变量 和 成员函数 分开储存的 class Person { public: Person() { mA 0; } //非静态成员变量占对象空间 int mA; //静态成员变量不占对象空间 static int mB; //函数也不占对象空间…

抽象的前端

问题背景&#xff1a;vue3&#xff0c;axios 直接导致问题&#xff1a;路由渲染失败 问题报错&#xff1a;Uncaught SyntaxError: The requested module /node_modules/.vite/deps/axios.js?v7bee3286 does not provide an export named post (at LoginIn.vue:16:9) 引入组…

C++ //练习 7.3 修改7.1.1节(第229页)的交易处理程序,令其使用这些成员。

C Primer&#xff08;第5版&#xff09; 练习 7.3 练习 7.3 修改7.1.1节&#xff08;第229页&#xff09;的交易处理程序&#xff0c;令其使用这些成员。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /********************…

淘宝项目实战相关知识点

淘宝各个方面的布局大部分都是常规操作&#xff0c;在这里我就简单记录一下练习过程中的相关知识点&#xff0c;比较简短。相关知识点如下&#xff1a; 行高的取值 假设font-size为16px line-height:normal; line-height:1.5;24px&#xff0c;先继承后计算 line-height:200%;3…

Java并发基础:Exchanger全面解析!

内容概要 Exchanger类的优点在于能够简洁高效地实现两个线程间的数据交换&#xff0c;通过Exchanger&#xff0c;开发者可以避免复杂的锁和同步机制&#xff0c;降低并发编程的难度&#xff0c;同时&#xff0c;它还提供了线程安全的数据交换保障&#xff0c;使得多线程协作更…

android 控制台输出 缺失

问题 android 控制台输出内容缺失 详细问题 笔者进行android开发&#xff0c;期望控制台打印Log日志或是输出内容 Log.i("tag","content");或 System.out.println("content")但是实际上&#xff0c;上述内容并没有按照笔者期望打印 解决方…