This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
碰撞对象是能给与游戏对象物理行为的组件. 碰撞对象包含许多物理属性比如重量, 弹性, 阻力等等. 组件上定义的一个或多个 形状 决定了它在物理空间中的样子. Defold 支持以下的碰撞对象:
碰撞对象组件包含一系列 属性 用以设定其类型和物理特性. 还包含一个或多个 形状 用以定义这个物体的物理形态.
在游戏对象上添加碰撞对象组件:
碰撞组件可包含多个简单形状或者一个复杂形状. 详见 碰撞形状教程.
Dynamic
, Kinematic
, Static
和 Trigger
. 如果设为动态就 必须 设置其 Mass 属性为非0的值. 动态静态碰撞对象都需要为其设置适当的 Friction 和 Restitution 值.0
(无摩擦—超级光滑) 到 1
(强摩擦—超级粗糙) 之间. 但其实任何正数值都有效.
摩擦力于法方向上的力成正比 (称为库伦摩擦). 计算两个物体 (A
和 B
) 间的摩擦力时, 摩擦系数取两个物体的几何平均值:
F = sqrt( F_A * F_B )
也就是说只要有一个物体是0摩擦的, 两个物体之间就不会有摩擦力.
两个物体 (A
和 B
) 之间的弹性计算基于以下公式:
R = max( R_A, R_B )
当一个形状发生多处碰撞时, 弹性模拟并不精确因为 Box2D 使用的是迭代解算器. Box2D 在碰撞相对速度很小时也使用非弹性碰撞代替, 以防止反弹抖动.
Box2D 并不精确计算阻尼. 值很小时阻尼与时间无关, 值很大时阻尼随时间变化. 如果时间步固定, 这不会造成问题.
Dynamic
的, 则忽略该选项.可以使用 go.get()
和 go.set()
來存取物理對象的一系列屬性:
angular_damping
number
). API reference.angular_velocity
vector3
). API reference.linear_damping
number
). API reference.linear_velocity
vector3
). API reference.mass
number
). API reference.Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB