您的位置:首页 > 移动开发 > Unity3D

unity3d中的碰撞系统

2015-07-07 21:56 309 查看
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顶点和顶点系数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息