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。