cocos2d-x box2d物理引擎深入研究 第一篇之旋转关节详解(b2RevoluteJoint)

本文深入探讨了cocos2d-x游戏引擎中Box2D物理引擎的旋转关节(b2RevoluteJoint),包括滚轮、链条等应用场景。详细介绍了旋转关节的属性如localAnchorA、localAnchorB、referenceAngle等,以及如何创建和设置旋转关节限制和马达,帮助开发者更好地理解和控制游戏物体的旋转行为。
摘要由CSDN通过智能技术生成

对于旋转关节场常见的包括如下:

  • 滚轮或滚筒
  • 链条或悬桥(使用多个旋转连接器)
  • 破布娃娃的关节
  • 转门,弹射器,杠杆

创建旋转关节

创建旋转关节首先设置b2RevoluteJointDef属性,然后用世界对象创建之.

然后我们看一堆关于旋转关节的属性。

  • localAnchorA - 基于刚体A的本地坐标系,在刚体A上的点,刚体A围绕这一点进行旋转.
  • localAnchorB - 基于刚体B的本地坐标系,在刚体B上的点,刚体B围绕这一点进行旋转.
  • eferenceAngle - 刚体B减去刚体B的弧度值.Box2D中角度用弧度表示.
  • enableLimit - 关节的限制是否开启
  • lowerAngle - 角度的最低限制
  • upperAngle - 角度的最高限制
  • enableMotor -关节马达是否开启
  • motorSpeed - 关节马达的目标速度(线性速度)
  • maxMotorTorque - 马达允许使用的最大扭矩值.扭矩就是力矩.力矩 = 力*力臂.

下面就用图形化来详细解释这些属性对旋转关节(RevoluteJoint)的作用.

1.localAnchorA  和 localAnchorB.

    这两个属性实际都是坐标点.而这两个坐标点都是基于刚体A和刚体B的自身本地坐标系而言的.比如:刚体A是一个宽度和高度都是4的正方形.若localAnchorA是b2Vec2(2,2).则localAnchorA这个点就在刚体A的最右上角.因为刚体A的原点(origin point)是在刚体A的正中心(刚体A的锚点默认是(0.5,0.5)),所以b2Vec2(2,2)就自然是在正方形的最右上角.

见下图:

见上图:假设正方形的宽高是2,原点是在正中心.则localAnchorA(1,1)就在其右上角. localAnchorB(0,0)就是圆的正中心.这样就相当于把正方形的右上角和圆的中心重合,并用一个旋转关节(RevoluteJoint)进行固定.就像一颗钉子一样.

 

2.eferenceAngle 参考角度.

参考角度实际上就是刚体B减去刚体A的角度.如果这个值为0,就是表示两个刚体的角度差为0,参考角度实际上就是关节的角度,在程序中可以通过GetJointAngle()来查看关节的旋转程度。当你使用关节限制(joint limits)的时候,参考角度还是有用的。

看下图:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值