Unity物理系统中碰撞体、刚体、isKinematic、isTrigger的关系(附动画演示)
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+刚体+取消重力)
结果:与实验七一样、两个物体不产生碰撞,两个物体都调用触发检测方法、不调用碰撞检测方法。
写在后面
“纸上得来终觉浅,绝知此事要躬行”——出自《冬夜读书示子聿》,作者陆游。
Unity物理系统中碰撞体、刚体、isKinematic、isTrigger的关系(附动画演示)相关推荐
- Unity 物理系统:Rigidbody(刚体)
Rigidbody组件 属性 释义 说明 Mass 质量 刚体的质量. Drag 阻力 影响位置运动的阻力系数. Angular Drag 角阻力 影响旋转运动的阻力系数. Use Gravit ...
- unity 根据模型生成碰撞体_Unity之碰撞体组件
3D物理组件中碰撞体组件添加与设置 碰撞体是物理组件中的一类,3D物理组件和2D物理组件有独特的碰撞体组件,它要与刚体一起添加到游戏对象上才能触发碰撞.如果两个刚体相互撞在一起,除非两个对象有碰撞体时 ...
- Unity 物理系统 -- 碰撞体简介(碰撞、触发条件)
Unity 物理系统 -- 碰撞体简介(碰撞.触发条件) 几个常用的碰撞体: Box Collider:盒碰撞体,盒碰撞体是一个立方体外形的基本碰撞体,该碰撞体可以调整为不同大小的长方体,可用作门.墙 ...
- Unity 物理系统 -- 刚体简介
刚体(RigidBody) 在Unity理引擎中,使用刚体(RigidBody)来模拟这种物理效果,当一个游戏对象被赋予刚体组件之后,游戏引擎就会对其进行物理效果的计算和模拟.同时我们也可以给这个对象 ...
- unity 计时器_如何用unity 物理系统 实现Stickfight中火柴人的布娃娃效果(二)
上一期中,我们完成了角色在没有任何输入的情况下实现了站立平衡,这期,我们就来聊一下角色的运动吧. 玄夜smile:如何用unity 物理系统 实现Stickfight中火柴人的布娃娃效果(一) ,还没 ...
- Unity 物理系统
Unity物理系统 ##1.人机交互 ++1.1.外部输入设备 ++++键盘 ++++触屏 ++++摇杆 ++++鼠标 ++1.2.Input类简介 ++++Input类是输入系统的接口,使用这个类能 ...
- HW6:物理系统与碰撞
作业要求:改进打飞碟游戏 游戏内容要求: 按下面adapter模式设计图修改飞碟游戏 使它同时支持物理运动与运动学(变换)运动 1. 物理引擎的改进版本思路与实现 由于游戏逻辑和界面都没有 ...
- UE4中碰撞体的设置
背景:UE4 的碰撞设置有很多需要注意的点.从官方的例子里面有专门针对 实物actor 的碰撞设置. 此次在开发局域网游戏过程中,需要对actor 增加BoxCollsion .但是针对以往的碰撞设置 ...
- PhysX APEX布料导入UE4中碰撞体失效的问题
关布料中的碰撞体(布娃娃)失效的问题困扰了很久,没办法只能用最笨的方法,从0开始加.加一个导UE4试试,然后再加,一个一个试. 当测试碰撞体数大于16个时发现问题了,当一个布料文件中超过16个就会出现 ...
最新文章
- R语言tidyr包pivot_longer函数、pivot_wider函数数据表变换实战(长表到宽表、宽表到长表)
- jsp页面之间跳转的数据传递
- formal method lecture 2: propositional logic
- 【直播预告】第四范式Intel AI应用与异构内存编程挑战赛
- 一文看懂神经网络初始化!吴恩达Deeplearning.ai最新干货
- request,response,session,application,out对象的常用调用的函数
- [LeetCode]Distinct Subsequences,解题报告
- 数据结构与算法-二叉树的名词概念与相关数据的计算
- redis---中文文档
- Qt汉字显示乱码的一个简单解决方案
- JavaWeb项目实战一(Servlet+Jsp项目项目搭建及登录界面)
- 服务式GIS实践与发展——REST 服务
- 程序猿周末副职业_早上,晚上和周末:我如何改变职业并成为程序员
- 软件企业的基本条件和认定流程
- SpringMVC 406
- 百度竞价推广需要注意什么?
- idea搜不到子目录下的配置怎么解决
- Ubuntu 安装 Gif 工具 -- Peek
- 网站空间服务器100m,网站100m空间
- 什么是物联网平台,从完整的物联网系统架构来介绍物联网平台