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的关系(附动画演示)相关推荐

  1. Unity 物理系统:Rigidbody(刚体)

    Rigidbody组件    属性 释义 说明 Mass 质量 刚体的质量. Drag 阻力 影响位置运动的阻力系数. Angular Drag 角阻力 影响旋转运动的阻力系数. Use Gravit ...

  2. unity 根据模型生成碰撞体_Unity之碰撞体组件

    3D物理组件中碰撞体组件添加与设置 碰撞体是物理组件中的一类,3D物理组件和2D物理组件有独特的碰撞体组件,它要与刚体一起添加到游戏对象上才能触发碰撞.如果两个刚体相互撞在一起,除非两个对象有碰撞体时 ...

  3. Unity 物理系统 -- 碰撞体简介(碰撞、触发条件)

    Unity 物理系统 -- 碰撞体简介(碰撞.触发条件) 几个常用的碰撞体: Box Collider:盒碰撞体,盒碰撞体是一个立方体外形的基本碰撞体,该碰撞体可以调整为不同大小的长方体,可用作门.墙 ...

  4. Unity 物理系统 -- 刚体简介

    刚体(RigidBody) 在Unity理引擎中,使用刚体(RigidBody)来模拟这种物理效果,当一个游戏对象被赋予刚体组件之后,游戏引擎就会对其进行物理效果的计算和模拟.同时我们也可以给这个对象 ...

  5. unity 计时器_如何用unity 物理系统 实现Stickfight中火柴人的布娃娃效果(二)

    上一期中,我们完成了角色在没有任何输入的情况下实现了站立平衡,这期,我们就来聊一下角色的运动吧. 玄夜smile:如何用unity 物理系统 实现Stickfight中火柴人的布娃娃效果(一) ,还没 ...

  6. Unity 物理系统

    Unity物理系统 ##1.人机交互 ++1.1.外部输入设备 ++++键盘 ++++触屏 ++++摇杆 ++++鼠标 ++1.2.Input类简介 ++++Input类是输入系统的接口,使用这个类能 ...

  7. HW6:物理系统与碰撞

    作业要求:改进打飞碟游戏  游戏内容要求:  按下面adapter模式设计图修改飞碟游戏  使它同时支持物理运动与运动学(变换)运动 1. 物理引擎的改进版本思路与实现 由于游戏逻辑和界面都没有 ...

  8. UE4中碰撞体的设置

    背景:UE4 的碰撞设置有很多需要注意的点.从官方的例子里面有专门针对 实物actor 的碰撞设置. 此次在开发局域网游戏过程中,需要对actor 增加BoxCollsion .但是针对以往的碰撞设置 ...

  9. PhysX APEX布料导入UE4中碰撞体失效的问题

    关布料中的碰撞体(布娃娃)失效的问题困扰了很久,没办法只能用最笨的方法,从0开始加.加一个导UE4试试,然后再加,一个一个试. 当测试碰撞体数大于16个时发现问题了,当一个布料文件中超过16个就会出现 ...

最新文章

  1. R语言tidyr包pivot_longer函数、pivot_wider函数数据表变换实战(长表到宽表、宽表到长表)
  2. jsp页面之间跳转的数据传递
  3. formal method lecture 2: propositional logic
  4. 【直播预告】第四范式Intel AI应用与异构内存编程挑战赛
  5. 一文看懂神经网络初始化!吴恩达Deeplearning.ai最新干货
  6. request,response,session,application,out对象的常用调用的函数
  7. [LeetCode]Distinct Subsequences,解题报告
  8. 数据结构与算法-二叉树的名词概念与相关数据的计算
  9. redis---中文文档
  10. Qt汉字显示乱码的一个简单解决方案
  11. JavaWeb项目实战一(Servlet+Jsp项目项目搭建及登录界面)
  12. 服务式GIS实践与发展——REST 服务
  13. 程序猿周末副职业_早上,晚上和周末:我如何改变职业并成为程序员
  14. 软件企业的基本条件和认定流程
  15. SpringMVC 406
  16. 百度竞价推广需要注意什么?
  17. idea搜不到子目录下的配置怎么解决
  18. Ubuntu 安装 Gif 工具 -- Peek
  19. 网站空间服务器100m,网站100m空间
  20. 什么是物联网平台,从完整的物联网系统架构来介绍物联网平台

热门文章

  1. stata代码乱码、转码问题的语句
  2. win10 服务器远程连接数量限制修改
  3. 回溯法-图的m着色问题
  4. dubbo源码解析之框架粗谈
  5. matlab解含gamma函数的方程组,matlab积分结果中的gamma()函数参数问题,急求解答!!!...
  6. 【3】SimpleIKT读取.nii文件
  7. elementUI的table表格改变数据不更新问题解决
  8. 【phpcms-v9】phpcms-v9中添加广告联盟代码
  9. C#设置textbox文本框只能输入0或1
  10. java web开发(学习路线)