P2.JS之移动约束(PrismaticConstraint)备忘

PrismaticConstraint,叫做活塞约束比较好理解,因为,被它约束的物体只能在单一方向作运动。
 
先上段关键代码:
 
1 var p1 = new p2.PrismaticConstraint (holderBody, circleBody, {
2     localAnchorA : [1, -0.5] ,
3     localAnchorB : [0, 0],
4     localAxisA : [0, 1],
5     disableRotationalLock : false
6 });
7 p1.setLimits( 0, 0 );
8 world.addConstraint(p1) ;

 

技术分享
 
矩形里面的那个蓝色的点表示矩形中心吧,截图的时候手动加上去的。
 
先说概念吧,localAnchorA与localAnchorB这里的坐标都是分别相对于物体A和物体B的。这里的物体A即方法传进去的第一个参数holderBody,物体B即circleBody。根据这里传进去的localAnchorA、localAnchorB,可知活塞约束的连接点为矩形的右下角和圆的中心点,即成了如图的样子。
 
localAxisA这个坐标被定义在物体A中,物体B的锚点将可以沿着此轴进行运动(原文:An axis, defined in body A frame, that body B‘s anchor point may slide along)。可以这样理解此坐标为[1,0]或者[-1,0]时,物B沿着水平方向运动;此坐标为[0,1]或者[0,-1]时,物B沿着垂直方向运动。
 
disableRotationalLock,此属性的用处是当设置为true时,物B将能够沿着锚点自由地旋转。这里设置为false是方便把约束给固定住。
 
setLimits(xx,xx) 方法可以设置约束的自由行动范围。这里写成setLimits(0, 0)是方便把约束给固定住。这个方法可以用来查看localAxisA所设置的约束行动轴。
 
反正多练习多实验吧。
 
 
p2.js v0.6.0 的压缩包,链接:http://pan.baidu.com/s/1mgsW7xA 密码:bj85
p2.js 的Github地址:https://github.com/schteppe/p2.js
 
参考:

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。