重点
开启物理系统。
物理系统默认是关闭的,如果需要使用物理系统,那么首先需要做的事情就是开启物理系统,否则你在编辑器里做的所有物理编辑都不会产生任何效果。
(可选)绘制物理调试信息
物理系统默认是不绘制任何调试信息的,如果需要绘制调试信息,请使用 debugDrawFlags。 物理系统提供了各种各样的调试信息,你可以通过组合这些信息来绘制相关的内容。
// 开启物理系统
cc.director.getPhysicsManager().enabled = true;
//绘制物理调试信息
cc.director.getPhysicsManager().debugDrawFlags = cc.PhysicsManager.DrawBits.e_aabbBit |
cc.PhysicsManager.DrawBits.e_pairBit |
cc.PhysicsManager.DrawBits.e_centerOfMassBit |
cc.PhysicsManager.DrawBits.e_jointBit |
cc.PhysicsManager.DrawBits.e_shapeBit
;
设置物理重力
cc.director.getPhysicsManager().gravity = cc.v2(0, -640);
距离关节
Distance Joint - 距离关节,关节两端的刚体的锚点会保持在一个固定的距离。
Anchor 和 ConnectedAnchor ,就是在其偏移的位置上
Distance 表示的是两者之间的距离,可以看到两个物体直接的虚线就是这个距离
Frequency 弹性系数:如想让两个物体的距离固定,就设置0。
Damping Ratio 阻尼:弹性系数不为0时,两个物体的距离恢复到 Distance的阻力
旋转关节
Revolute Joint - 旋转关节,可以看做一个铰链或者钉,刚体会围绕一个共同点来旋转。
referenceAngle:- 相对角度。
lowerAngle -角度的最低限制。
upperAngle -角度的最高限制。
maxMotorTorque - 可以施加到刚体的最大扭矩。
motorSpeed -期望的马达速度。要想关节另一端链接的刚体旋转时设置这个速度,同时开启下面的关节马达enableMotor。
enableLimit -是否开启关节的限制?
enableMotor -是否开启关节马达?
想要链接的刚体旋转,这个刚体一定要有物理碰撞组件
绳子关节
Rope Joint - 绳子关节,将关节两端的刚体约束在一个最大范围内。
maxLength -最大长度。主要的一个参数即两端的刚体的最大长度
轮子关节
Wheel Joint - 轮子关节,由 Revolute 和 Prismatic 组合成的关节,用于模拟机动车车轮。
既然是个轮子,当然要做一个小车了。启动马达,小车就能跑了。
localAxisA -指定刚体可以移动的方向。
maxMotorTorque -可以施加到刚体的最大扭矩。
motorSpeed -期望的马达速度。
enableMotor -是否开启关节马达?
frequency -弹性系数。
dampingRatio -阻尼,表示关节变形后,恢复到初始状态受到的阻力。
焊接关节
Weld Joint - 焊接关节,根据两个物体的初始角度将两个物体上的两个点绑定在一起。
referenceAngle -相对角度。
棱柱关节
Prismatic Joint - 棱柱关节,两个刚体位置间的角度是固定的,它们只能在一个指定的轴上滑动。
localAxisA -指定刚体可以移动的方向。
referenceAngle -相对角度
可以看到红框位置是设置的移动范围
马达关节
Motor Joint - 马达关节,控制两个刚体间的相对运动。
linearOffset -关节另一端的刚体相对于起始端刚体的位置偏移量
angularOffset -关节另一端的刚体相对于起始端刚体的角度偏移量
maxForce - 可以应用于刚体的最大的力值
maxTorque - 可以应用于刚体的最大扭矩值
correctionFactor -位置矫正系数,范围为 [0, 1]
大概就是这个几个关节的简单用法了,一方面是自己学习记录,一方面是想分享一下。勿喷!