Java ApplyLinear脉冲不工作(Box2d)
我有一个物体,它的物理性质和台球一样。以下是完整的代码:Java ApplyLinear脉冲不工作(Box2d),java,android,libgdx,box2d,Java,Android,Libgdx,Box2d,我有一个物体,它的物理性质和台球一样。以下是完整的代码: BodyDef bddDef = new BodyDef(); bddDef.type = BodyType.DynamicBody; bddDef.position.x = Position.x; bddDef.position.y = Position.y; bddDef.linearDamping = .03f; bddDef.angularDamping = .09f; b
BodyDef bddDef = new BodyDef();
bddDef.type = BodyType.DynamicBody;
bddDef.position.x = Position.x;
bddDef.position.y = Position.y;
bddDef.linearDamping = .03f;
bddDef.angularDamping = .09f;
bddDef.gravityScale = 10F;
bdBox = wWorld.createBody(bddDef);
CircleShape csCircle = new CircleShape();
csCircle.setRadius(this.SIZE_RADIUS);
csCircle.getPosition().x = bddDef.position.x;
csCircle.getPosition().y = bddDef.position.y;
FixtureDef fxtDef = new FixtureDef();
fxtDef.density = 20.00f;
fxtDef.friction = 0f;
fxtDef.restitution = 0.3f;
fxtDef.shape = csCircle;
bdBox.setBullet(true);
bdBox.resetMassData();
this.fxtSensorFixture = bdBox.createFixture(fxtDef);
csCircle.dispose();
像这样设置ApplyLinearPulse
public void update(float x, float y){
if(distance(x,y)<=SIZE_RADIUS)
return;
Vector2 vec = new Vector2(x,y);
getBody().applyLinearImpulse(this.localToStageCoordinates(vec), getBody().getPosition(), true);
}
公共无效更新(浮动x、浮动y){
如果(距离(x,y)找到了解决方案。如果有人遇到同样的问题,你可以试试
public void update(float x, float y){
Vector2 pos = bdBox.getPosition();
bdBox.applyLinearImpulse(x*bdBox.getMass(), y*bdBox.getMass(), pos.x, pos.y, true);
}
“不移动”和“缓慢移动”是两个完全不同的东西。如果它不移动,你可能会在代码中的某个地方完全失败,但如果它移动缓慢,你可能会遇到一些计算问题,这些问题可能很小。那么,它移动缓慢还是根本不移动?谢谢你的回答。是的,对不起,没有正确地放置。当然,我们谈论的是一个非常小的问题速度。好的,我认为您的计算有问题。请检查发送到applyLinearImpulse方法的内容。您的更新游戏逻辑(刷新率等)也可能有问题谢谢你的回答。当我在发送方法ApplyLinearPulse之前查看点的坐标时,从视觉上看,它们有正确的坐标。游戏世界在这里更新,所以getWorld()步骤(delta,4,4)在当前活动的渲染方法中。我还可以省略什么?另一个小说明。我没有要求额外的速度。仅指定ApplyLinearPulse。