- 注册时间
- 2016-10-11
- 最后登录
- 2016-10-13
- 阅读权限
- 20
- 积分
- 13
- 精华
- 0
- 帖子
- 3
|
在HTML5 canvas游戏开发实战这本书里面,在使用Box2D和lufylegend来添加各种关节的章节(9.5.3)中,里面的滑轮关节的方法为setPulleyJoint ( b2BodyDefA b2BodyDefB anchorA anchorB ratio ) ,其中的anchorA的参数是这么解释的,“表示物体A相关的控制参数数组,这个数组的内容是:[x,y,length],使用setPulleyJoint建立滑轮关节的时候,会自动以物体本身的中心作为描点,anchorA数组的前两个元素,决定了关节被建立时物体相对于这个描点的位置,anchorA数组的最后一个元素,决定了左侧绳子的长度”。
我有疑问的是最后这个length参数,书配套demo提供的方法为:LGlobal.box2d.setPulleyJoint(box01.box2dBody, box02.box2dBody,[0,50,300],[0,100,300],1.0)。按照我的理解,修改[0,50,300]最后的300为1000,那么左侧绳子的长度就应该会变得更长一点,或者说,我用鼠标能拉动左侧物体的距离会更长一点,但实际效果是没有变化。然后我找了相关的源代码来看,看不太懂……不过大概看出来如果我想让左侧绳子长度发生变化,并不只是修改这里的300的值,而是还需要修改anchorA数组的锚点的坐标配合。所以想问问这到底是什么个关系?
比如我想就现在的demo,单纯的想把左侧绳子变长一点,其他坐标值什么都不变,应该怎么修改参数?
我把这两个球以及滑轮关节的代码贴出来,以免还要麻烦你去翻书看章节代码:
box01 = new LSprite();
box01.x = 200;
box01.y = 100;
backLayer.addChild(box01);
box01.addBodyCircle(20,0,0,1,1,0.5,0.6);
box01.setBodyMouseJoint(true);
box02 = new LSprite();
box02.x = 300;
box02.y = 100;
backLayer.addChild(box02);
box02.addBodyCircle(20,0,0,1,1,0.4,0.2);
box02.setBodyMouseJoint(true);
LGlobal.box2d.setPulleyJoint(box01.box2dBody, box02.box2dBody,[0,50,300],[0,100,300],1.0);
|
|