【发布时间】:2015-08-13 23:11:21
【问题描述】:
祝你有个愉快的夜晚。
我有以下问题:
一个 Box2d 动态主体,带有一个夹具,所有顶点从主体的原点以正 x / y 放置。 http://i.stack.imgur.com/MXQRr.png
但是旋转是在身体原点 0/0 上而不是在质心上..
所以我尝试了这些方法:
1: 在身体中间设置身体的原点(顶点正和负) 问题:旋转有效,Sprite 定位几乎是不可能的
2: 设置海量数据中心 = originOfBody.x + 宽度 / 2,originOfBody.y + 高度 / 2 问题:就像我什么都不做,仍然在 0, 0 处围绕身体原点旋转
在下面的代码 sn-p 中你可以看到我的实例化。
BodyDef bodyDef = new BodyDef();
bodyDef.type = BodyDef.BodyType.DynamicBody;
bodyDef.position.set(new Vector2(200, 2));
body = world.createBody(bodyDef);
FixtureDef fixtureDef = new FixtureDef();
fixtureDef.density = 0.6f;
fixtureDef.friction = 0.4f;
fixtureDef.restitution = 0.2f;
bodyLoader.attachFixture(body, "Rocket1n2", fixtureDef, WIDTH);
originOfBody = bodyLoader.getOrigin("Rocket1n2", WIDTH);
MassData data = body.getMassData();
data.center.set(Box2DUtils.getWidth(body) / 2, 0);
data.I = body.getMassData().I; //without this line programm fails with assertion
body.setMassData(data);
Vector2 cpy = data.center.cpy();
我使用以下代码旋转播放器:
body.setAngularVelocity(addition); //addition is predefined(atm 1 / -1)
我目前使用来自 aurelia(?) 的 Body Physics Editor 和一些 hack,它可以工作,我对其他对象没有任何问题,因为我不旋转它们。放置就像一个魅力..
我希望我犯一个重大错误.. 通常 box2d 必须自动计算旋转中心(质量中心)?
这次我忍不住了.. :(
【问题讨论】: