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

几个常用的碰撞体:

  1. Box Collider:盒碰撞体,盒碰撞体是一个立方体外形的基本碰撞体,该碰撞体可以调整为不同大小的长方体,可用作门、墙、以及平台等
    面板属性如下:
    Is Trigger:触发器,勾选该项,则该碰撞体可用于触发事件,并将被物理引擎所忽略
    Material:材质
    Center:中心,碰撞体在对象局部坐标中的位置
    Size:大小,碰撞体再X、Y、Z方向上的大小
  2. Sphere Collider:球形碰撞体,球形碰撞体是一个基于球体的基本碰撞体,球体碰撞体的三维大小可以均匀等地调节,但不能单独调节某个坐标轴方向的大小
    Radius:半径,球形碰撞体的大小
  3. Capsule Collider:胶囊碰撞体,胶囊碰撞体由一个圆柱体和与其相连的两个半球体组成,是一个胶囊形状的基本碰撞体,胶囊碰撞体的半径和高度都可以单独调节,可用在角色控制器或与其他不规则形状的碰撞结合来使用
    Height:高度,该项用于控制碰撞体中圆柱的高度
    Direction:方向,在对象的局部坐标中胶囊的纵向方向所对应的坐标轴,默认是Y轴
  4. Mesh Collider:网格碰撞体,网格碰撞体通过获取网格对象并在其基础上构建碰撞,在与复杂网格模型上使用基本碰撞相比,网格碰撞体要更加精细,但会占用更多地系统资源
    Smooth Sphere Collisions:平滑碰撞,在勾选该项后碰撞会变得平滑
    Mesh:网格,获取游戏对象的网格并将其作为碰撞体
    Convex:凸起,勾选该项,则网格碰撞体将会与其他的网格碰撞体发生碰撞
    Wheel Collider:车轮碰撞体,车轮碰撞体是一种针对地面车辆的特殊碰撞体,它有内置的碰撞检测、车轮物理系统以及滑胎摩擦的参考体
    Suspension Distance:悬挂距离,该项用于设置车轮碰撞体悬挂的最大伸长距离,按照局部坐标来计算,悬挂总是通过其局部坐标的Y轴延伸向下
    Center:中心,该项用于设置车轮碰撞体在对象局部坐标的中心
    Suspension Spring:悬挂弹簧,该项用于设置车轮碰撞体通过添加弹簧和阻尼外力使得悬挂达到目标位置
    Forward Friction:向前摩擦力,当轮胎向前滚动时的摩擦力属性
    Sideways Friction:侧向摩擦力,当轮胎侧向滚动时的摩擦力属性
  5. character controller组件属性
    Character Controller,角色控制器,角色控制器主要用于对第三人称或第一人称游戏主角的控制,并不使用刚体物理效果
    Slope Limit:坡度限制,该项用于设置所控制的角色对象只能爬上小于或等于该参数值的斜坡
    Step Offset:台阶高度,该项用于设置所控制的角色对象可以迈上的最高台阶的高度
    Skin Width:皮肤厚度,该参数决定了两个碰撞体可以相互渗入的深度,较大的参数值会产生抖动的现象,较少的参数值会导致所控制的游戏对象被卡住,较为合理地设定上是:该参数值为Radius值的10%
    Min Move Distance:最小移动距离,如果所控制的角色对象的移动距离小于该值,则游戏对象将不会移动
    Center:中心,该参数决定了胶囊碰撞体再世界坐标中得位置,
    Radius:半径,胶囊碰撞体的长度半径,
    Height:高度,该项用于设置所控制的角色对象的胶囊碰撞体的高度

碰撞与触发分别对应的三种函数方法

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

  1. 碰撞器是一群组件,它包含了很多种类,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上。
  2. 所谓触发器,只需要在Inspector检视面板中的碰撞器组件中勾选IsTrigger属性选择框。
  3. 在Unity中,主要有以下接口函数来处理这两种碰撞检测:

触发信息检测:

  • MonoBehaviour.OnTriggerEnter( Collider other )当进入触发器
  • MonoBehaviour.OnTriggerExit( Collider other )当退出触发器
  • MonoBehaviour.OnTriggerStay( Collider other )当逗留触发器

碰撞信息检测:

  • MonoBehaviour.OnCollisionEnter( Collision collisionInfo ) 当进入碰撞器
  • MonoBehaviour.OnCollisionExit( Collision collisionInfo ) 当退出碰撞器
  • MonoBehaviour.OnCollisionStay( Collision collisionInfo ) 当逗留碰撞器

碰撞检测条件:

  1. 两个物体都有Collider
  2. 至少有一个物体挂载Rigidbody
  3. Collider上都不勾选Is Trigger

触发检测条件:

  1. 两个物体都有Collider
  2. 至少有一个物体挂载Rigidbody
  3. 所挂脚本物体勾选Is Trigger (有一个勾选了就可以)
public class collider : MonoBehaviour
{//--------------碰撞器--------------private void OnCollisionEnter(Collision collision){   //打印碰撞到物体的名称Debug.Log(collision.gameObject.name);      //获取碰撞到物体的Render组件并且更改其材质球颜色collision.gameObject.GetComponent<Renderer>().material.color = Color.red;}private void OnCollisionStay(Collision collision){Debug.Log(collision.gameObject.name);collision.gameObject.GetComponent<Renderer>().material.color = Color.blue;}private void OnCollisionExit(Collision collision){Debug.Log(collision.gameObject.name);collision.gameObject.GetComponent<Renderer>().material.color = Color.green;}//--------------触发器--------------  勾选isTrgger  private void OnTriggerEnter(Collider other){//打印引起触发的物体名称Debug.Log(other.name);//改变自己的颜色GetComponent<Renderer>().material.color = Color.red;}private void OnTriggerStay(Collider other){GetComponent<Renderer>().material.color = Color.blue;}private void OnTriggerExit(Collider other){GetComponent<Renderer>().material.color = Color.green;}}

Unity 物理系统 -- 碰撞体简介(碰撞、触发条件)相关推荐

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

    Unity物理系统中碰撞体.刚体.isKinematic.isTrigger的关系 写在前面 产生碰撞的条件 产生触发的条件 实验一:蓝块(碰撞体).红块(碰撞体) 实验二:蓝块(碰撞体).红块(碰撞 ...

  2. Unity 物理系统

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

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

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

  4. Unity物理系统-物理材质-Collider碰撞体的弹力不够大如何处理

    物理材质Physic Material: 当碰撞器发生碰撞的时候,具有该材质的游戏物体就会具有该材质的属性: Step1:在Project窗口下新建Physic Material(命名为mat),并更 ...

  5. [Unity][2D][物理碰撞]同一层级碰撞体忽略碰撞

    3D碰撞体和2D碰撞体的原理 ,代码差不多.参考资料3 参考资料2,一个2D碰撞体忽略另外一个碰撞体. 参考资料1,一个层级的 碰撞体 忽略 另外一个 层级的 碰撞体. Edit-ProjectSet ...

  6. Unity --- 物理引擎 ---- 刚体RigidBody 与 碰撞器 collider

    1.RigidBody(刚体)的作用是让物体具有物理特性(比如说重力,摩檫力等等) 2.如果想让物体能够与其它物体发生碰撞的话,我们还需要一个组件 --- Colider碰撞器组件 1.上图就是Uni ...

  7. Unity碰撞体不碰撞以及代码添加EventTrigger事件

    文章目录 前言 一.同类型物体的碰撞体不发生碰撞 二.代码控制EventTrigger添加事件 总结 前言 本文所记内容有两点: 一.同类型物体的碰撞体不发生碰撞. 二.代码控制EventTrigge ...

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

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

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

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

最新文章

  1. 高昆仑大数定律 中心极限定理
  2. sentinel 官方文档_SpringCloud网关聚合Swagger接口文档实践
  3. Binary Tree Level Order Traversal II 解题思路
  4. 数据产品通用复合指标查询计算的实践
  5. 理解C++ lvalue与rvalue
  6. CodeForces - 222C Reducing Fractions(唯一分解定理)
  7. 使用握手信号实现跨时钟域数据传输
  8. 切图崽的自我修养-规范CSS元素命名
  9. MVVM和MVC有什么区别
  10. LeetCode —— 深搜水题记录
  11. VS2008中C++打开Excel(MFC)
  12. QT学习-核心类列表-4、Qt WebKit Widgets 5、Qt3DCore
  13. 【BFS】LeetCode 130. Surrounded Regions
  14. 每日一题--字符串数组重排(Google推荐面试书--Cracking the Coding Interview)
  15. 使用计算机对炼钢过程,炼钢过程计算机二级系统
  16. Python资源索引 【转载】
  17. vue中引用BScroll监听上拉加载报错
  18. 基于 软件体系结构(第3版)考试重点和复习指南
  19. IDEA 使用 hibernate
  20. html中如何使阴影正片叠底,两种方法让你的PPT做出「正片叠底」的效果!

热门文章

  1. spss实战案例----分析多个变量与因变量之间是否存在关系,方差分析
  2. 1.7 什么是软件生命周期模型?试比较瀑布模型,快速原型模型,增量模型和螺旋模型的优缺点,说明每种模型的适用范围
  3. 区域经济发展的扬州创新:融合工业化与信息化
  4. mysql字符串类型的数字比较大小sql该如何写呢
  5. 微信小程序_文档_05_框架_组件_插件_多线程_兼容_优化
  6. [NOI 2008]假面舞会(综合图论)
  7. AutoJs学习-实现自动发邮件
  8. 电机功率和转矩、转速之间的关系
  9. 如何解决PDFcopy文本乱码的问题!
  10. 周易六十四卦——否卦