如何在libgdx中使Body在直线中移动

时间:2015-11-14 20:11:19

标签: java libgdx box2d

我刚刚开始使用libgdx并且在直线移动身体时遇到问题,并希望在touchDown上以某个角度向右转。

 //BALL  creating ball
    // body defination
    BodyDef  bodyDef = new BodyDef();
    bodyDef.type = BodyDef.BodyType.DynamicBody;   
    bodyDef.position.set(8.50f, 8.50f);


    //ball shape
    CircleShape ballshape = new CircleShape();
    ballshape.setRadius(.75f);


    // ball fixture defination
    FixtureDef fixtureDef = new FixtureDef();
    fixtureDef.shape = ballshape ;
    fixtureDef.density = 2.5f;
    fixtureDef.friction = 0.25f;
    fixtureDef.restitution = 0.25f;

     ball = world.createBody(bodyDef);
     ball.createFixture(fixtureDef);

    ballshape.dispose(); 

我试图在2天内解决这个问题,但无法在任何地方找到任何示例或教程。在每个教程中,人们都使用键盘键来移动身体和身体。这在android中不起作用。

先谢谢。

编辑: 在昨晚尝试了一点之后,我开始知道touchDown方法正在接触。

 Gdx.input.setInputProcessor(new InputController() {

        @Override
        public boolean touchDown(int screenX, int screenY, int pointer, int button) {
            ((Game)Gdx.app.getApplicationListener()).setScreen(new MainMenu());

         //  ball.applyLinearImpulse(new Vector2(0,500), ball.getPosition() , true);
            return true;
        }


    });

因为它在触摸时将屏幕设置为MainMenu,但它不适用于任何forceimplusevelocity

1 个答案:

答案 0 :(得分:0)

这是一些简单的代码,您可以从Libgdx / Box2D中移动一个主体开始 当然有很多方法可以做到这一点很简单:

  算法:

     

如果你触摸屏幕的前半部分==>身体动作   落后

     

如果你触摸屏幕的第二半==>身体动作   前进

if(Gdx.input.isTouched()) { // Detect is finger on the screen
    int x = Gdx.input.getX(); // get x touch coordination
    int y = Gdx.input.getY(); // get y touch coordination

    if(x < Gdx.graphics.getWidth()/2) { // First half Screen ==> move backward
        body.setLinearVelocity(-SpeedMove,0);
    }else if(x >= Gdx.graphics.getHeight() /2) { // Second half Screen ==> move forward
        body.setLinearVelocity(SpeedMove,0);
    }
}else { // no finger is on the screen
    body.setLinearVelocity(0,0); // ==> no moving body
}

任何麻烦发表评论

祝你好运!