Libgdx 施加脉冲时,Box2d车身粘在平台/墙壁的侧面

Libgdx 施加脉冲时,Box2d车身粘在平台/墙壁的侧面,libgdx,box2d,Libgdx,Box2d,在一个侧滚平台类型的游戏中,我的角色遇到了一个奇怪的问题。如果他移动到平台的一侧,而我继续按住移动按钮,他只会粘在上面,直到我松开移动键,他才会摔倒。这是我的移动代码: public void move(float percent){ float desiredVel = speed.x *percent; float velChange = desiredVel - b2body.getLinearVelocity().x; float impu

在一个侧滚平台类型的游戏中,我的角色遇到了一个奇怪的问题。如果他移动到平台的一侧,而我继续按住移动按钮,他只会粘在上面,直到我松开移动键,他才会摔倒。这是我的移动代码:

public void move(float percent){
        float desiredVel = speed.x *percent;
        float velChange = desiredVel - b2body.getLinearVelocity().x;
        float impulse = b2body.getMass() * velChange;
        b2body.applyLinearImpulse(new Vector2(impulse,0),b2body.getWorldCenter(),true);
    }
这称为基于触摸板控制器的给定百分比,但基本上百分比介于-1和1之间。这是我的角色身体/固定装置:

BodyDef bdef = new BodyDef();
        bdef.position.set(704/ Constants.PPM, 1000/Constants.PPM);
        bdef.type = BodyDef.BodyType.DynamicBody;
        b2body = world.createBody(bdef);
        b2body.setFixedRotation(true);

        //Hitbox
        FixtureDef fixtureDef = new FixtureDef();
        PolygonShape shape = new PolygonShape();
        shape.setAsBox(20/Constants.PPM,45/Constants.PPM);
        fixtureDef.shape = shape;
        //Add in category and mask bits
        hitbox = b2body.createFixture(fixtureDef);
        hitbox.setUserData("hitbox");
这是平台的主体/固定装置:

bdef.type = BodyDef.BodyType.StaticBody;
            bdef.position.set((rect.getX() + rect.getWidth() / 2) / Constants.PPM, (rect.getY() + rect.getHeight() / 2) / Constants.PPM);

            body = world.createBody(bdef);

            shape.set(new Vector2(-rect.getWidth()/2/Constants.PPM, rect.getHeight()/2/Constants.PPM),new Vector2(rect.getWidth()/2/Constants.PPM, rect.getHeight()/2/Constants.PPM));

            fdef.shape = shape;
            fdef.friction = 0.5f;
            fdef.density = 1;
            fdef.filter.categoryBits = Constants.GROUND_BIT;
            body.createFixture(fdef).setUserData("platform");

这是由于运动员推入克服重力的平台时产生的摩擦力造成的

您可以尝试以下几点:

  • 减少角色或平台的摩擦以减少摩擦
  • 添加传感器以检测何时发生摩擦碰撞,并禁用该方向的用户输入
  • 在平台侧面或球员侧面添加无摩擦身体

  • 这是由于运动员推入克服重力的平台时产生的摩擦力造成的

    您可以尝试以下几点:

  • 减少角色或平台的摩擦以减少摩擦
  • 添加传感器以检测何时发生摩擦碰撞,并禁用该方向的用户输入
  • 在平台侧面或球员侧面添加无摩擦身体