box2d b2MouseJoint 的 bodyA, bodyB

原文链接:http://blog.csdn.net/zhangxaochen/article/details/8009457

之前在看这一篇教程:

http://www.raywenderlich.com/475/how-to-create-a-simple-breakout-game-with-box2d-and-cocos2d-tutorial-part-12

中文版:http://www.cnblogs.com/andyque/archive/2011/05/27/2059460.html


里面提到说:

当你创建一个mouse joint后,你赋值给它两个body。第一个没有被使用,通常都是设置成ground body。第二个,就是你想让它移动的body,在这个例子中就是paddle

心里略疑惑,那个bodyB 设置为我们希望拖动的对象是可以理解的,但是bodyA 一定要设为 groundBody 吗?如果仅仅是习惯,可以写NULL吗?

实验了一下:

1. 如果 mjDef.bodyA=NULL; 那么程序运行时触摸屏幕,程序会挂掉

2. 如果 mjDef.bodyA=_world->CreateBody(new b2BodyDef); 即随手新建一个body,【默认坐标是(0,0)】,并把它设为bodyA, 拖动正常

3. 如果:

		b2BodyDef zBody;
		zBody.position.Set(1, 1);
		mjDef.bodyA=_world->CreateBody(&zBody);


新建一个body,坐标设为(1,1),并把它加到 bodyA,拖动正常

===================================

看来bodyA对调用者来说确实无关紧要,应该是起到个为 bodyB 设置一个参考点的作用吧
原文链接:http://blog.csdn.net/zhangxaochen/article/details/8009457

{{OVER}}

你可能感兴趣的:(null)