Libgdx如何在按键时获取事件?
我是新手,我想做一个像马里奥一样的游戏,我对按键有问题。这是我的密码Libgdx如何在按键时获取事件?,libgdx,Libgdx,我是新手,我想做一个像马里奥一样的游戏,我对按键有问题。这是我的密码 public class MyGdxGame extends ApplicationAdapter implements InputProcessor{ private TextureAtlas myTexture; private SpriteBatch sprite; private TextureRegion solider; private Vector2 position=new Vector2(0,0);
public class MyGdxGame extends ApplicationAdapter implements InputProcessor{
private TextureAtlas myTexture;
private SpriteBatch sprite;
private TextureRegion solider;
private Vector2 position=new Vector2(0,0);
@Override
public void create () {
sprite= new SpriteBatch();
myTexture=new TextureAtlas("metal-slug.txt");
solider=myTexture.findRegion("solider-run");
Gdx.input.setInputProcessor(this);
}
@Override
public void render () {
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
sprite.begin();
sprite.draw(solider, position.x, 0);
sprite.end();
}
@Override
public boolean keyDown(int keycode) {
if (keycode== Keys.D){
position.x+=10;
}
if (keycode== Keys.A){
position.x-=10;
}
return false;
}
}
问题是当我按下键时对象只是移动,但当按键释放时它停止,我想当按住键时,对象应该移动到右屏幕。您可以使用可变移动来移动对象
public class MyGdxGame extends ApplicationAdapter implements InputProcessor {
private TextureAtlas myTexture;
private SpriteBatch sprite;
private TextureRegion solider;
private Vector2 position=new Vector2(0,0);
private float move=0f;
@Override
public void create () {
sprite= new SpriteBatch();
myTexture=new TextureAtlas("metal-slug.txt");
solider=myTexture.findRegion("solider-run");
Gdx.input.setInputProcessor(this);
}
@Override
public void render () {
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
sprite.begin();
sprite.draw(solider, position.x+move, 0);
sprite.end();
}
@Override
public boolean keyDown(int keycode) {
if (keycode== Keys.D){
move=1;
}
if (keycode== Keys.A){
move=-1;
}
return false;
}
}