unity3d中的碰撞系统

原创 2015年07月07日 21:56:09

Trigger触发器:
属于事件系统,不属于物理系统
触发过场动画,自动门开启,显示教程。

Collider碰撞器
属于物理和事件系统,先物理碰撞检测,再事件触发系统

物理材质,决定碰撞方式(摩擦,弹力,柔软度),不同于渲染材质。

碰撞检测:

  • 不连续:

            他和其他碰撞器,离散碰撞检测
            其他碰撞器和他,离散碰撞检测
            *默认设置*
    
  • 连续碰撞检测:

            他和其他碰撞器
                    动态碰撞器(有刚体)使用离散碰撞检测
                    静态Mesh碰撞器(无rigidbody,防止角色和地形或者障碍物穿
                    插??)使用连续碰撞检测
            其他碰撞器和他
                    连续动态碰撞器使用连续碰撞检测
                    其他碰撞器使用离散碰撞检测
            *用于被连续动态碰撞器碰撞的物体、*
    
  • 连续动态碰撞器:

            他和其他碰撞器
                    连续碰撞器,连续动态碰撞器明,静态Mesh碰撞器
                    (rigidbody,防止角色障碍物或者地形穿插?)使用连续碰
                    撞检测
            其他碰撞器和他
                    离散碰撞检测
            *用于快速移动的物体*
    

1 连续碰撞或者连续动态碰撞均有针对地形或者障碍物进行连续碰撞检测的特殊处理,所以连续体现在此(保证不穿墙,但是可以穿角色)
2 连续碰撞和连续动态碰撞作用时,双方采用连续碰撞检测。子弹打木块,子弹木块都用连续碰撞检测。
3 连续动态碰撞之间也用连续碰撞检测,比如两个子弹ko。

基于层的碰撞检测

Sphere collider
是否是trigger,决定是不是触发事件,属于事件系统,而不是用物理系统做碰撞检测。

Box collider

Capsule collider

Mesh collider
依据mesh网格。
设置为convex才可以和其他的mesh collider碰撞。Contex网格三角面不要超过255个(char型)

枪支需要用简单的碰撞体组合在一起。

碰撞器类型:
Static collider 静态碰撞器:
只有collider,没有rigidbody,用作静态的物体(环境),被碰撞后不会动。
应用:环境。

Rigidbody collider 刚体碰撞器
物理系统:受力+碰撞检测
应用:大多数场景。

Kinematic Rigidbody collider 运动学刚体碰撞器
不受力,程序改变位移旋转
应用: 创建ragdoll,用铰链去驱动rigidbody。

Collision和trigger的组合类型:
1 Static静态 和动态(rigidbody 和 kinematic rigidbody)
2 collider和trigger

Collision的产生:
Collider和collider
注意! 两个运动学刚体碰撞器相碰撞,不会有collision的消息产生!
可以理解为:都只包括运动,没有实体,所以没有碰撞。猜测

Trigger的产生:
Collider和trigger, trigger和trigger
除了static和static,其他都可以产生trigger事件。

关节
都有共同属性: connect body, break force/torque

铰链 Hinge Joint
拥有该组件的物体必须是kinematic rigidbody
(可以一个kinematic,两个kinematic或者一个non-kinematic一个kinematic),
设置旋转轴位置和旋转方向,基于本地坐标,轴向旋转。
Break force和torque可以制作门被炸开的效果。
应用:门,钟摆,链子

弹簧关节 spring joint
拥有该组件的物体必须是kinematic rigidbody
(可以一个kinematic,两个kinematic或者一个non-kinematic一个kinematic)
就像中间有弹簧一样。
应用:橡皮筋或者弹弓。
创建子弹被弹射的效果,可以增加一个空的gameobject作为拥有该spring joint组件的rigidbody的Coneect body。当远离该空的gameobject的时候,就可以产生弹力。

Fixed joint 固定关节
使用物理达到和父子级的层级变换效果
应用:
1 希望多个物体轻易的被分开
2 想让两个没有父子级关系的对象同时运动
比如 粘性炸弹等附属类的东西。

Character joint角色关节
应用: ragdoll

布料
Interactive cloth交互式布料

Skinned cloth 蒙皮布料
应用:角色身上的衣服
和SkinnedMeshRenderer 同时使用,使用skinnedmeshrenderer的顶点做布料运算。
不需要物理计算,只需要SkinnedMeshRenderer顶点和顶点系数

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

在Unity3D中实现简单的碰撞检测 及可能出现的错误

要求: 当立方体Cube碰撞到地面Plane的时候,输出碰撞物体的名称,则表述检测到立方体碰撞了地面。 过程: 1、搭建一个简单的场景 a.    在新建的工程中选择File-...
  • DADADIE
  • DADADIE
  • 2014年12月05日 08:45
  • 1934

unity3d之地形设置(补充碰撞,绘制公路,树木创建器)

今天是继续昨天的讲的,在地形场景中可以添加局部风力,点击gameobject—create other—wind zone,然后在右侧的属性中设置风力的大小等。 添加碰撞:      如果你发...

Shark出品:Unity物体下落时的反弹系数

最近在学习刚体下落遇水平面,希望其能有个反弹缓冲,而不是一下就稳稳的落在地上 给Cube增加BoxCollider后,还是不能反弹,最后设置BoxCollider的Material属性才最终实现这个...

Space Shooter之子弹和敌人碰撞检测、爆炸特效以及敌人的运动

原始状态 飞船现在能够发射子弹,以及移动等,但是可以看到子弹碰撞到陨石时,并没有发生爆炸或者销毁等等现象。下面进行设置:...
  • iFuMI
  • iFuMI
  • 2016年04月24日 12:39
  • 2168

U3d刚体,碰撞,触发器

U3d刚体,碰撞,触发器首先是刚体的解释: Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可接受外力与扭矩力用来保证游戏对象像在真实世界中那样进行运动。任何游戏对象只有添加...

Unity3D入门(二):碰撞检测

碰撞器由来 1.系统默认会给每个对象(GameObject)添加一个碰撞组件(ColliderComponent),一些背景对象则可以取消资格组件。 2.在unity3d中,能检测碰撞发生的方式有两种...

Unity3D 5 官方教程:地形设置

Unity3D 5中对地形进行设置

Unity3D Terrain Settings 彻底搞懂 地形详细设置 全实验与解析 (二)base map dist

许多Terrain的详细设置,看懂单词也不明白啥意思,这次准备一次性实验完,彻底搞懂! 同时参考Ceeger圣典的翻译、Unity Manual、实验 来进行解释 Base Map Dist -...

unity3d中的碰撞系统

Trigger触发器:  属于事件系统,不属于物理系统  触发过场动画,自动门开启,显示教程。 Collider碰撞器  属于物理和事件系统,先物理碰撞检测,再事件触发系统 物理材质...

Unity3d非物理引擎模拟碰撞效果

  • 2017年08月12日 14:47
  • 179KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:unity3d中的碰撞系统
举报原因:
原因补充:

(最多只允许输入30个字)