Unity中常用的碰撞器
通常Colliders会与Rigidbody一起使用,没有添加碰撞体的刚体会彼此相互穿过。
常用碰撞体有以下几种:
Box Collider:
盒子碰撞体,是一个立方体外形的碰撞体,可调整为不同大小的长方体,一般可用作门,墙及平台等,也可用于交通工具的外壳。最适合的是使用在盒子和箱子上。
选项:
• Is Trigger:触发器,勾选后可用于触发事件,且将被物理引擎所忽略。
• Material:材质,采用不同的Physics Material决定了碰撞体与其他对象的交互形式。
• Center:碰撞体在对象局部坐标的中的位置
• Size:可调整碰撞体的大小
• Sphere Collider:球形碰撞体,是一个基于球体的碰撞体,可用作石头,乒乓球等
• Radius:调整球形碰撞体的半径,没有了Size属性。
Capsule Collider:
胶囊碰撞体,由一个圆柱体两端分别连接两个半球体组成,可用在Character Controllers,或与一些其他不规则形状的碰撞结合来使用。
选项:
• Height:高度。
• Direction:方向,默认是Y轴
Mesh Collider:
网格碰撞体,通过获取网格对象并在其基础上构建碰撞器,与其他碰撞体相比,网格碰撞体更加精细,但会占用更多系统资源。只有在开启Convex属性才可以与其他的网格碰撞体发生碰撞。
选项:
• Smooth Sphere Collisions:平滑碰撞,开启此项碰撞会变得平滑,因此在平滑的表面建议开启此选项。
• Mesh:网格,获取对象的网格并将其作为碰撞体。
• Convex:凸起,勾选后可以与其他的网格碰撞起发生碰撞。
• 注意:网格碰撞器可以与所有的碰撞体发生碰撞,但要与其他的网格碰撞体发生碰撞必须开启Convex属性,且只有当网格碰撞体网格的三角形数量少于255的时候Convex属性才会生效。
Wheel Collider:
车轮碰撞体,是一种针对地面车辆的特殊碰撞体,它有内置的碰撞检测,车轮物理系统,滑胎摩擦参考体。除了车轮也可用于其他对象。
选项:
• Mass:车轮碰撞体的质量。
• Radius:车轮碰撞体的半径大小。
• Suspension Distance:车轮碰撞体的最大悬挂距离,根据局部坐标Y轴向下延伸。
• Center:轮胎碰撞体的局部坐标的中心。
• Suspension Spring:车轮的悬挂弹簧,通过添加弹簧和阻力使得悬挂达到目标位置。
• Spring:弹簧,弹簧力度越大,悬挂到达目标的位置也就越快。
• Damper:阻力器,阻尼器控制着悬挂的速度,数值越大,悬挂弹簧移动的速度越慢。
• Target Position:悬挂沿着其方向上的静止时的距离。
• Forward Friction:当轮胎向前滚动时的摩擦力属性。
• Extremum Slip:滑动极值
• Extremum Value:极限值
• Asymptote Slip:滑动渐进值
• Asymptote Value:渐进值
• Stiffness Factor:刚性因子
• Sideways Friction:当轮胎侧向滚动时的摩擦力属性。
• 同Forward Friction一样有5个可设置值
车轮碰撞检测是通过从局部坐标Y轴向下投射一条射线来实现的,车轮有一个通过悬挂距离向下延伸的半径,可通过脚本中不同的属性值来对车辆进行控制。这些属性值有motorTorque(马达转矩)、brakeTorque(制动转矩)和steerAngle(转向角)。与其他物理引擎的碰撞体相比,车轮碰撞体是通过一个基于滑动摩擦力的参考体来单独计算摩擦力的。