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 Terrain Settings 彻底搞懂 地形详细设置 全实验与解析 (三)Thickness

许多Terrain的详细设置,看懂单词也不明白啥意思,这次准备一次性实验完,彻底搞懂! 同时参考Ceeger圣典的翻译、Unity Manual、实验 来进行解释 Thickness ---unit...
  • narutojzm1
  • narutojzm1
  • 2016年04月19日 19:13
  • 3205

浅谈Unity中的碰撞检测

欢迎大家来到我的博客http://unity.gopedu.com/home.php?mod=space&uid=3352&do=blog&view=me&from=space 碰撞检测 ...
  • gy4564349
  • gy4564349
  • 2014年12月20日 23:28
  • 4729

u3d物体反弹碰撞知识

Unity物体碰撞时的反弹系数:也即Physic Material的 Bounciness属性。 一句话,给物体的Collider添加Material属性即可 1,首先,物体要有Collide...
  • luxiaoyu_sdc
  • luxiaoyu_sdc
  • 2014年03月27日 14:53
  • 12993

[Unity3D]Unity3D 游戏开发之碰撞检测

大家好,欢迎大家关注由我为大家带来的Unity3D游戏开发系列文章,我的博客地址为:http://blog.csdn.net/qinyuanpei。 今天我们来一起来学习Unity3D中一个很重要的概...
  • qinyuanpei
  • qinyuanpei
  • 2014年04月07日 12:43
  • 8215

Unity 物理分层碰撞

需求是这样的,物件一共有4个:枪,骑士,马,盾牌 要求枪不可以刺到 马 和 枪 马 和 马互相可以碰撞 枪 可以刺到 骑士 和 盾。 一开始我自己弄得挺迷糊的,后来突然想到,这玩意不是可以在P...
  • WangHaoDiablo
  • WangHaoDiablo
  • 2016年10月10日 08:22
  • 247

检测是否碰撞地面

if(Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition)...
  • zhliu1991
  • zhliu1991
  • 2014年10月17日 15:44
  • 763

Unity3D导入的FBX场景模型设置物体之间的碰撞

猴子原创,欢迎转载。转载请注明: 转载自Cocos2D开发网--Cocos2Dev.com,谢谢!原文地址: http://www.cocos2dev.com/?p=339导入的场景文件,发现人物会穿...
  • yanghuiliu
  • yanghuiliu
  • 2012年11月29日 18:03
  • 11433

(第十章)Unity3D-脚本的碰撞与触发

我们在游戏里经常会看到,某两个物体发生碰撞之后zon
  • u011507161
  • u011507161
  • 2014年11月02日 13:01
  • 3093

Unity中碰撞时触发事件

如果要触发碰撞事件,必须具备如下条件: 碰撞双方都要有碰撞,至少有一个有刚体组件,双方Collider至少有一个开启Is Trigger。 Is Trigger指示,碰撞器是否是一个触发器,这样发生碰...
  • u010698150
  • u010698150
  • 2016年09月20日 11:58
  • 6879

一种3D游戏碰撞检测解决方案

碰撞检测在3D游戏中至关重要,好的碰撞检测要求人物在场景中可以平滑移动,遇到一定高度内的台阶可以自动上去,而过高的台阶则把人挡住,遇到斜率较小的斜坡可以上去,斜率过大则把人挡住,在各种前进方向被挡住的...
  • weiqubo
  • weiqubo
  • 2012年01月16日 23:43
  • 4819
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:unity3d中的碰撞系统
举报原因:
原因补充:

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