【Unity入门】碰撞检测

news2024/10/6 1:37:49

碰撞器由来

1.系统默认会给每个对象(GameObject)添加一个碰撞组件(ColliderComponent),一些背景对象则可以取消该组件。
2.在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。这两种方式的应用非常广泛。为了完整的了解这两种方式,我们必须理解以下概念:

(一)碰撞器:是一群组件,它包含了很多种类,比如:Box Collider,Capsule Collider等,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上。主要有以下接口函数:

碰撞信息检测:

  1. MonoBehaviour.OnCollisionEnter( Collision collisionInfo ) 碰撞发生
  2. MonoBehaviour.OnCollisionExit( Collision collisionInfo ) 碰撞结束
  3. MonoBehaviour.OnCollisionStay( Collision collisionInfo ) 碰撞期间
    private void OnCollisionEnter(Collision collision)
    {
        Debug.Log("碰撞发生");
        Debug.Log("碰撞到的物体:" + collision.gameObject.name);
    }

    private void OnCollisionExit(Collision collision)
    {
        Debug.Log("碰撞结束");
    }

    private void OnCollisionStay(Collision collision)
    {
        Debug.Log("碰撞中");
    }

(二)触发器:只需要在检视面板中的 碰撞器 组件中勾选 IsTrigger 属性选择框(勾选之后,物体之间就不会碰撞)。主要有以下接口函数:
触发信息检测:
5. MonoBehaviour.OnTriggerEnter( Collider other ) 触发发生
6. MonoBehaviour.OnTriggerExit( Collider other ) 触发结束
7. MonoBehaviour.OnTriggerStay( Collider other ) 接触期间

    private void OnTriggerEnter(Collider other)
    {
        Debug.Log("触发发生");
        Debug.Log("触碰到的物体:"+other.gameObject.name);
    }

    private void OnTriggerExit(Collider other)
    {
        Debug.Log("触发结束");
    }

    private void OnTriggerStay(Collider other)
    {
        Debug.Log("接触中");
    }

总结,有碰撞无触发,相反有触发无碰撞

组件参数说明

1、Rigidbody 组件

在这里插入图片描述

  • Mass

对象的质量(默认为千克)

  • Drag

根据力移动对象时影响对象的空气阻力大小。0 表示没有空气阻力,无穷大使对象立即停止移动

  • Angular Drag

根据扭矩旋转对象时影响对象的空气阻力大小。0 表示没有空气阻力。请注意,如果直接将对象的 Angular Drag 属性设置为无穷大,无法使对象停止旋转。

  • Use Gravity

如果启用此属性,则对象将受重力影响。

  • Is Kinematic

如果启用此选项,则对象将不会被物理引擎驱动,只能通过 (Transform) 对其进行操作。对于移动平台,或者如果要动画化附加了 HingeJoint 的刚体,此属性将非常有用。

  • Interpolate
    仅当在刚体运动中看到急动时才尝试使用提供的选项之一。有以下三个参数
    None
    不应用插值。
    Interpolate
    根据前一帧的变换来平滑变换。
    Extrapolate
    根据下一帧的估计变换来平滑变换。

  • Collision Detection
    用于防止快速移动的对象穿过其他对象而不检测碰撞。有以下四个参数
    Discrete
    对场景中的所有其他碰撞体使用离散碰撞检测。其他碰撞体在测试碰撞时会使用离散碰撞检测。用正常碰撞(这是默认值)。
    Continuous
    对动态碰撞体(具有刚体)使用离散碰撞检测,并对静态碰撞体(没有刚体)使用基于扫掠的连续碰撞检测。设置为_连续动态 (Continuous Dynamic) 的刚体将在测试与该刚体的碰撞时使用连续碰撞检测。其他刚体将使用离散碰撞检测。用于连续动态 (Continuous Dynamic) 检测需要碰撞的对象。(此属性对物理性能有很大影响,如果没有快速对象的碰撞问题,请将其保留为 Discrete 设置)
    Continuous Dynamic
    对设置为连续 (Continuous)和连续动态 (Continuous Dynamic)碰撞的游戏对象使用基于扫掠的连续碰撞检测。还将对静态碰撞体(没有刚体)使用连续碰撞检测。对于所有其他碰撞体,使用离散碰撞检测。用于快速移动的对象。
    Continuous Speculative
    对刚体和碰撞体使用推测性连续碰撞检测。这也是可以设置运动物体的唯一 CCD 模式。该方法通常比基于扫掠的连续碰撞检测的成本更低。

  • Constraints
    对刚体运动的限制。
    Freeze Position
    有选择地停止刚体沿世界 X、Y 和 Z 轴的移动。
    Freeze Rotation
    有选择地停止刚体围绕局部 X、Y 和 Z 轴旋转。

更多信息看点击查看

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

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

相关文章

pcr扩增原理中的变性 退火 延申扩增

一、PCR简介 聚合酶链式反应(PCR)是一种用于放大扩增特定的DNA片段的分子生物学技术,它可看作是生物体外的特殊DNA复制,PCR的最大特点是能将微量的DNA大幅增加。 二、PCR原理 1.背景 DNA的半保留复制是生物进化和传代的重要途…

PHP众筹系统源码+支持报名众筹+商品众筹+无偿众筹+市面上所有的众筹模式 附带完整的搭建教程

大家好啊,罗峰今天来给大家分好用的源码系统了。今天要给大家分享的是一款PHP众筹系统源码。众筹作为一种新型的融资方式,逐渐在市场上占据了重要的地位。从公益众筹到商品众筹,再到股权众筹,各种众筹模式层出不穷。然而&#xff…

水淹七军(递归,又是递归)

北大2023级最强新生问我的,最后他的问题说是重写了一遍就解决了 乐死了,有的时候根本看不出源代码漏了哪里 我的思路是: 一个数组记录本次放水所经过的格子,经过的不再递归 一个数组记录地图上各地点的高度 一个数组记录地图…

string OJ题

目录 1.仅仅反转字母 2.字符串中的第一个唯一字符​编辑 3.字符串最后一个单词的长度 4.替换空格 1.仅仅反转字母 我们可以定义两个变量来表示数组首尾位置的有效字符的下标,然后分别从前和从后向中间遍历,只要遇到字母就停下来,利用库函数…

黑马点评笔记 redis实现优惠卷秒杀

文章目录 难题全局唯一IDRedis实现全局唯一Id 超卖问题问题解决方案乐观锁问题 一人一单 难题 要解决优惠卷秒杀的问题我们要考虑到三个个问题,全局唯一ID,超卖问题,一人一单。 全局唯一ID 用户抢购时,就会生成订单并保存到同一…

从裸机启动开始运行一个C++程序(十四)

前序文章请看: 从裸机启动开始运行一个C程序(十三) 从裸机启动开始运行一个C程序(十二) 从裸机启动开始运行一个C程序(十一) 从裸机启动开始运行一个C程序(十) 从裸机启动…

喜报!美格智能连续五年荣获物联网100强企业

近日,由中国科学院主管、科学出版社主办的《互联网周刊》联合eNet研究院发布了“2023物联网企业100强”榜单,美格智能凭借在技术创新、市场表现、综合实力等多方面的健稳表现连续五年入选榜单。 《互联网周刊》创办于1998年,是最为权威的商业…

15 reids哨兵机制

redis主机默认是10s发送一次心跳给从节点。 从节点默认1s去发送心跳给主节点。 1、原理 当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。 从节点的主要两个作用: 主节点的数据备份。…

Linux——使用kill结束进程并恢复进程

目录 查看进程结束进程修复进程 查看进程 在linux中,关闭某进程之前先查看已经在运行的进程有哪些,使用下面命令查看: ps aux | grep -i apt 命令查看哪个进程正在使用 apt结束进程 结束某线程的命令为: sudo kill -9 PID 命令…

Azure Machine Learning - Azure可视化图像分类操作实战

目录 一、数据准备二、创建自定义视觉资源三、创建新项目四、选择训练图像五、上传和标记图像六、训练分类器七、评估分类器概率阈值 八、管理训练迭代 在本文中,你将了解如何使用Azure可视化页面创建图像分类模型。 生成模型后,可以使用新图像测试该模型…

AT360-6T GNSS 单频高精度授时模块特性参数

AT360-6T 模块具有高灵敏度、低功耗、低cost等优势,可以满足电力授时,通信授时等领域的应用。AT360-6T特点: 1.支持北斗二代/北斗三代信号 2.高精度授时 3.可靠性授时 实时高精度授时 AT360-6T 系列模块的授时秒脉冲抖动可以达到 10ns&am…

2023快速成为接口测试高手:实用指南!

大量线上BUG表明,对接口进行测试可以有效提升产品质量,暴露手工测试时难以发现的问题,同时也能缩短测试周期,提升测试效率。但在实际执行过程中,接口测试被很多同学打上了“上手难,门槛高”的标签。 本文旨…

Vue服务端渲染——同构渲染

Vue.js 可以用于构建客户端应用程序,组件的代码在浏览器中运行,并输出 DOM 元素。同时,Vue.js 还可以在 Node.js 环境中运行,它可以将同样的组件渲染为字符串并发送给浏览器。这实际上描述了 Vue.js 的两种渲染方式,即…

AndroidStudio2022.3.1 Patch3使用国内下载源加速

记录一下这个版本的as在使用国内下载源加速碰到的诸多问题。 一、gradle-8.0-bin.zip下载慢 编辑项目文件夹/gradle/wrapper/gradle-wrapper.properties,文件内容改为如下: #Fri Nov 24 18:50:06 CST 2023 distributionBaseGRADLE_USER_HOME distribu…

汽车电子 -- 根据DBC解析CAN报文

采集的CAN报文,怎么通过DBC解析呢?有一下几种方法。 首先需要确认是CAN2.0 还是CAN FD报文。 还有是 实时解析 和 采集数据 进行解析。 一、CAN2.0报文实时解析: 1、CANTest工具 使用CAN分析仪 CANalyst-II,采集CAN报文。 使用…

嵌入式FPGA IP正在发现更广阔的用武之地

作者:郭道正, Achronix Semiconductor中国区总经理 在日前落幕的“中国集成电路设计业2023年会暨广州集成电路产业创新发展高峰论坛(ICCAD 2023)”上,Achronix的Speedcore™嵌入式FPGA硅知识产权(eFPGA IP&#xff09…

LabVIEW绘制带有多个不同标尺的波形图

LabVIEW绘制带有多个不同标尺的波形图 通过在同一波形图上使用多个轴,可以使用不同的标尺绘制数据。请按照以下步骤操作。 将波形图或图表控件放在前面板上。 1. 右键点击您要创建多个标尺的轴,然后选择复制标尺。例如,如果要为一个…

iview/view-design+vue2实现表单校验

1.iview/view-design介绍 iview是一款基于Vue.js的开源UI组件库,提供了丰富的组件和样式,支持响应式布局和多语言环境。它使用了最新的前端技术,如ES6、Webpack和SASS,让开发者可以快速构建高质量的Web应用程序。 View-design是一…

JavaScript字符串操作指南:跨行表示与模板字面量

背景: 在 JavaScript 中,如果一个字符串需要跨行表示,你可以使用多种方式来实现。 实现: 法一: 使用反斜杠(\)进行换行续行: let str "这是一个跨行的字符串,\ 我在这里使…

400G QSFP-DD DR4光模块最新产品案例应用解析

随着数据中心的快速发展,企业、供应商以及用户对更高、更快速的网络需求日益增长,易天推出的400G QSFP-DD DR4光模块方案可以更好的帮助用户解决这一系列问题,下面跟随小易一起来看看该产品具有哪些方面的特点和优势吧! 一、400G…