Unity物理系统中碰撞体、刚体、isKinematic、isTrigger的关系(附动画演示)

news/2024/5/3 22:28:20/文章来源:https://blog.csdn.net/iiiiiiimp/article/details/126822387

Unity物理系统中碰撞体、刚体、isKinematic、isTrigger的关系

  • 写在前面
    • 产生碰撞的条件
    • 产生触发的条件
    • 实验一:蓝块(碰撞体)、红块(碰撞体)
    • 实验二:蓝块(碰撞体)、红块(碰撞体+刚体)
    • 实验三:蓝块(碰撞体+刚体)、红块(碰撞体+刚体)
    • 实验四:蓝块(碰撞体+刚体+isKinematic)、红块(碰撞体+刚体)
    • 实验五:蓝块(碰撞体+刚体+isKinematic)、红块(碰撞体)
    • 实验六:蓝块(碰撞体+isTrigger)、红块(碰撞体)
    • 实验七:蓝块(碰撞体+isTrigger)、红块(碰撞体+刚体)
    • 实验八:蓝块(碰撞体+isTrigger+刚体+取消重力)、红块(碰撞体+刚体)
    • 实验九:蓝块(碰撞体+isTrigger+刚体+取消重力)、红块(碰撞体+isTrigger+刚体+取消重力)
  • 写在后面

写在前面

看了网上一些关于碰撞和刚体的讲解,自己再做了一下实验,这里总结一下。

产生碰撞的条件

条件:两个物体都有碰撞体+至少有个物体有刚体。
注意
(1)Unity中碰撞体独立于物体大小,与物体的MeshFilter大小无关。
(2)只有碰撞体才能被射线检测到,否则无法被检测。
(3)只有刚体才会有受力效果。
(3)isKinematic就有点像把刚体关了,但没完全关,因为保留了物理特性如质量,速度等等。

产生触发的条件

条件:产生碰撞的条件(两个物体都有碰撞体+至少有个物体有刚体)+两个物体至少有个有触发器
注意
(1)碰撞检测和触发检测不能同时触发,如果是触发检测方法调用就不可能会有碰撞检测方法调用。

实验一:蓝块(碰撞体)、红块(碰撞体)

结果:无法产生碰撞
结论:两个物体都有碰撞体,无法产生碰撞。两个物体都不调用碰撞检测方法,如OnCollisionEnter、OnCollisionExit
在这里插入图片描述

实验二:蓝块(碰撞体)、红块(碰撞体+刚体)

结果:红块受力反弹、蓝块不动、两个物体都会调用碰撞检测方法
结论
(1)两个物体都有碰撞体+至少有个物体有刚体才能产生碰撞
(2)只有加了刚体的一方会受到力的影响
在这里插入图片描述
在这里插入图片描述

实验三:蓝块(碰撞体+刚体)、红块(碰撞体+刚体)

结果:蓝块和蓝块都受力影响、两个物体都会调用碰撞检测方法
结论:只有加了刚体才会受到力的影响
在这里插入图片描述
在这里插入图片描述

实验四:蓝块(碰撞体+刚体+isKinematic)、红块(碰撞体+刚体)

结果:红块受力反弹、蓝块不动、两个物体都会调用碰撞检测方法
结论
(1)isKinematic不会对碰撞和力做出反应,不受物理系统影响,但依然会对其他刚体产生物理影响(比如可以撞击其他刚体)。
(2)isKinematic只能在脚本中修改物体的Transform属性来移动。
(3)用在经常需要移动等变化物理状态的碰撞体上。一个刚体碰撞体,可以随时开启或关闭Is Kinematic选项,不会像静态碰撞体的enabled开启或关闭那样引起物理系统的问题。

在这里插入图片描述
在这里插入图片描述

实验五:蓝块(碰撞体+刚体+isKinematic)、红块(碰撞体)

结果:蓝块和红块不产生碰撞,两个物体都不调用碰撞检测方法
结论:isKinematic就有点像把刚体关了,但没完全关,因为保留了物理特性如质量,速度等等
在这里插入图片描述

实验六:蓝块(碰撞体+isTrigger)、红块(碰撞体)

结果:两个物体不产生碰撞,两个物体都不调用触发检测方法,如OnTriggerEnter、OnTriggerExit、不调用碰撞检测方法。
结论:两个只有触发器没办法实现触发检测
在这里插入图片描述

实验七:蓝块(碰撞体+isTrigger)、红块(碰撞体+刚体)

结果:两个物体不产生碰撞,两个物体都调用触发检测方法、不调用碰撞检测方法
结论:触发条件为:两个物体都有碰撞体(也是产生碰撞的条件)+至少有个物体有刚体(也是产生碰撞的条件)+两个物体至少有个有触发器
在这里插入图片描述
在这里插入图片描述

实验八:蓝块(碰撞体+isTrigger+刚体+取消重力)、红块(碰撞体+刚体)

结果:与实验七一样、两个物体不产生碰撞,两个物体都调用触发检测方法、不调用碰撞检测方法。

实验九:蓝块(碰撞体+isTrigger+刚体+取消重力)、红块(碰撞体+isTrigger+刚体+取消重力)

结果:与实验七一样、两个物体不产生碰撞,两个物体都调用触发检测方法、不调用碰撞检测方法。

写在后面

“纸上得来终觉浅,绝知此事要躬行”——出自《冬夜读书示子聿》,作者陆游。
在这里插入图片描述

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

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

相关文章

Apache Hudi 是什么?

前言 本文隶属于专栏《大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见大数据技术体系 背景 2016 年,优步开发了 Apache Hudi&…

自制操作系统日志——第十六天

自制操作系统日志——第十六天 今天我们再接再厉,继续进一步的完成我们的多任务机制。 文章目录自制操作系统日志——第十六天一、多任务自动管理化二、任务休眠设定任务优先级总结一、多任务自动管理化 在昨天我们的多任务都是通过自己手动添加,然后进…

工业4.0 资产管理壳学习笔记(1)

何谓资产? 工业4.0的观点下,资产是任何“对组织具有价值的对象(object which has a value for an organization)”。因此,工业4.0中的资产几乎可以采取任何形式,例如生产系统,产品,软…

Vue基础案例-成绩显示

成绩排序应该按照降序排 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthde…

msm8953 LCD移植详解

一、简介 本文是基于高通msm8953的LCD模块移植说明。LCD移植主要是涉及到LK和kernel部分的修改。 二、实操准备 1、专业术语 HSYNC:行同步信号&#xff0c;表示扫描1行的开始。 VSYNC:帧同步信号,表示扫描1帧的开始&#xff0c;一帧也就是LCD显示的一个画面。 HFP:Horizon …

Linux学习笔记——网络管理

主要涉及Linux网络管理的几个简单指令&#xff0c;主要包括ifconfig、ping、nslookup 获取网络接口的配置信息 可以使用 ifconfig 命令查看网络接口的配置信息 语法 ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址>][del<地址>][<hw<网络…

认识我们的团队:Ed Hertzog

认识我们的团队:Ed HertzogOur team works hard, but they believe in the work they do— hear more from one of our devs below. 了解背后的人 茴香梗 ——在本系列中,我们与 Fennel Labs 团队的成员坐下来了解更多关于他们是谁以及他们做什么的信息。今天,我们一起出去玩…

网络编程-流

流一、概貌1.消息类型二、getmsg和putmsg函数三、getpmsg和putpmsg函数四、ioctl函数五、TPI&#xff1a;传输提供者接口1.TPI时间获取客户程序一、概貌 流在进程和驱动程序(driver)之间提供全双工的连接,如下所示&#xff0c;虽然我们称底部那个方框为驱动程序&#xff0c;它…

02 最优化模型建立方法

1 什么是数学模型 数学模型是关于部分现实世界和为一种特殊目的而作地一个抽象地.简化地结构。 具体就是为了某种目的&#xff0c;用字母.数字及其他数学符号建立起来地等式或不等式以及图表。图像。框图等描述客观事物的特征及内在联系的数学结构表达式。 2.建立数学模型的方…

【Linux---02】CentOS操作系统的说明「简单使用 | 文件目录 | 常用命令」

文章目录1. CentOS的简单使用2. CentOS的文件目录2.1 目录结构2.2 各个目录的含义3. CentOS的常用命令1. CentOS的简单使用 鼠标进入虚拟机的OS&#xff1a;直接点击鼠标左键 鼠标退出虚拟机的OS&#xff1a;ctrl alt 在linux系统上&#xff0c;不使用图形化终端&#xff0c…

蓝牙BLE调试关于NRF connect相关信息分析

简介 nRF Connect是一个强大的通用工具&#xff0c;它允许你扫描和探索你的蓝牙低功耗(以后的蓝牙LE&#xff0c;也称为蓝牙4.0版本的蓝牙规范)设备&#xff0c;并与它们通信。 nRF连接还允许您的iOS设备广告作为一个外围设备&#xff0c;充分支持许多蓝牙SIG采用的配置文件。…

微信小程序在线考试项目开发-用户信息注册登录功能

⭐️⭐️⭐️ 作者&#xff1a;船长在船上 &#x1f6a9;&#x1f6a9;&#x1f6a9; 主页&#xff1a;来访地址船长在船上的博客 &#x1f528;&#x1f528;&#x1f528; 简介&#xff1a;CSDN前端领域优质创作者&#xff0c;资深前端开发工程师&#xff0c;专注前端开发…

ERAT读和写指令(eratre和eratwe)

ERAT管理指令 为了使hypervisor&#xff08;或 “bare-metal” operating system&#xff09;软件可以直接操作ERAT的entries&#xff0c;在A2 core中实现一组nonarchitected的ERAT管理指令。为了防止user和guest模式下的程序影响TLB地址转换和访问控制机制&#xff0c;所有的E…

乐高广告创意50例——创意无砖

乐高的创意不仅仅局限于建造令人惊叹的建筑,或是拍摄定格电影,甚至是重新制作音乐专辑封面和电影海报,它甚至延伸到了广告领域。 与塑料砖一样,乐高可以采用最简单的概念,做出强大、智能且通常诙谐的声明。 从本图库中的精彩平面广告中,你可以看到,典型的乐高广告所采用…

《Python3 网络爬虫开发实战》:灵巧好用的 正则表达式

灵巧好用的 正则表达式 在上一节中&#xff0c;我们已经可以用 requests 来获取网页的源代码&#xff0c;得到 HTML 代码。但我们真正想要的数据是包含在 HTML 代码之中的&#xff0c;怎么才能从 HTML 代码中获取我们想要的信息呢&#xff1f;正则表达式就是其中一个有效的方法…

基于VC++的WEB浏览器的实现

目 录 摘 要 2 1设计题目与要求 2 2系统设计 2 2.1总体设计 2 2.2详细设计 2 2.2.1用户界面设计 3 2.2.2多标签模块设计 6 2.2.3浏览模块设计 6 2.2.4操作按钮模块设计 9 2.2.5页面缩放模块设计 10 2.2.6状态栏模块设计 11 2.2.7收藏夹模块设计 13 2.2.8窗体关闭模块设计 13 2.…

网页设计中蒸汽朋克的美丽例子

即使你不熟悉蒸汽朋克这个词,你无疑已经通过流行文化被介绍到了这种设计现象。蒸汽朋克指的是一种异想天开的风格,这种风格基于对19世纪可能的反乌托邦世界的想象。这听起来可能有点复杂,但这个折衷的类别将H.G.威尔斯的想法与维多利亚时代的设计、工业主义主题、后世界末日…

第3章 基础项目的搭建

3.1 后端项目搭建 3.1.1 gitee下载脚手架 下载地址&#xff1a;https://gitee.com/77jubao2015/springbootdemo 打开浏览器输入以上地址&#xff0c;点击下载即可&#xff0c;如图所示&#xff1a; 3.1.2 把脚手架导入到idea开发工具 步骤01 把下载后的脚手架放到指定位置并解…

数据库基本概念

目录 一、数据库概念 1、数据库的组成 &#xff08;数据为行&#xff0c;字段为列&#xff09; 2、数据库的管理系统&#xff08;DBMS) 二、数据库系统发展史 1、第一代数据库&#xff08;人工管理&#xff09; 2、第二代数据库&#xff08;文件管理&#xff09; 3、第三…

大学SQLServer2012 安装流程+启动+登录+用户的操作

这里写目录标题第一步下载解压的文件第二步骤安装软件第三步执行安装选项执行安装选项1执行安装选项2执行安装选项3 同意条款执行安装选项4配置检测执行安装选项5 下载需求组件执行安装选项6 上面安装完成后执行安装选项需求---关闭防火墙执行安装选项7--重新检测执行安装选项8…