我刚刚开始使用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,但它不适用于任何force
,impluse
或velocity
。
答案 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
}
任何麻烦发表评论
祝你好运!