java - 如何在java中使用键盘使 Sprite 移动(libgdx)

标签 java keyboard libgdx sprite 2d-games

我正在为学校动机制作游戏,我已经制作了 Sprite 和背景(平铺 map )我的问题是如何使用键盘使 Sprite 左右移动,请大家帮忙我尽快这是我的代码:

public class LEVEL1 implements ApplicationListener, Screen {
private Music music;
private SpriteBatch batch;
private Texture Sprite;
private Vector2 position;
private TiledMap map;
private OrthogonalTiledMapRenderer renderer;
private OrthographicCamera camera;

@Override
public void render(float delta) {       
    Gdx.gl.glClearColor(1, 0, 0, 0);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    position.y = position.y - 5;

    // player Controls
    if(position.y < 0){
        position.y = 0;
    }

    //..................................................

    // renderer camera and map
    camera.update();
    renderer.setView(camera);
    renderer.render();
    //...................................................

//tells the computer when to start drawing textures
    batch.begin();
    batch.draw(Sprite, position.x, position.y, 50, 50);
    batch.end();
    //...................................................

    camera = new OrthographicCamera();
    camera.setToOrtho(true, 2920,950);

}

@Override
public void show() {    
    Sprite = new Texture("Sprite.png");
    batch = new SpriteBatch();
    position = new Vector2(650, Gdx.graphics.getHeight());

    map = new TmxMapLoader().load("map1.tmx");

    renderer = new OrthogonalTiledMapRenderer(map);

    camera = new OrthographicCamera();

      music = Gdx.audio.newMusic((Gdx.files.internal("GameSound.mp3")));

        music.setLooping(false);
        music.setVolume(0.5f);
        music.play();
}

@Override
public void create() {

}

@Override
public void resize(int width, int height) {
    camera.viewportWidth = width;
    camera.viewportHeight = height;
    camera.position.set(width/2f, height/3f, 0); //by default camera position on (0,0,0)
    camera.update();


}

@Override
public void render() {
    if(Gdx.input.justTouched())
        music.play();


}

@Override
public void dispose() {
    map.dispose();
    renderer.dispose();
    music.dispose();        
}

@Override
public void hide() {
    // TODO Auto-generated method stub

}

@Override
public void pause() {
    // TODO Auto-generated method stub

}

@Override
public void resume() {
    // TODO Auto-generated method stub

}

}

最佳答案

这里我做了一个使用按键(上、下、左、右)移动 Sprite 的小例子

您应该在 libgdx wiki 中找到更多详细信息

public class Level1 implements ApplicationListener {


    Sprite sprite;
    SpriteBatch batch;

    float spriteXposition;
    float spriteYposition;

    @Override
    public void render() { 

        Gdx.gl.glClearColor(1, 0, 0, 0);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        //tells the computer when to start drawing textures
        batch.begin();
        sprite.setPosition(spriteXposition, spriteYposition);
        sprite.draw(batch);
        batch.end();

        spriteControl();

    }

    public void spriteControl() {

        if(Gdx.input.isKeyPressed(Keys.UP)) {
            spriteYposition++;
        }
        if(Gdx.input.isKeyPressed(Keys.DOWN)) {
            spriteYposition--;
        }

        if(Gdx.input.isKeyPressed(Keys.LEFT)) {
            spriteXposition--;
        }

        if(Gdx.input.isKeyPressed(Keys.RIGHT)) {
            spriteXposition++;
        }
    }


    @Override
    public void create() {

        sprite = new Sprite(new Texture(Gdx.files.internal("sprite.png")));
        batch = new SpriteBatch();
    }
}

关于java - 如何在java中使用键盘使 Sprite 移动(libgdx),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33283867/

相关文章:

java - 如何使用文件观察器?

android - OnKeyboardActionListener 安卓键

java - Android Libgdx 致命信号 11(SIGSEGV),代码 1,故障地址 0x0

android - 将 Libgdx 项目导出到 Android

java - 用于 Java EE Web 应用程序的可扩展 UI 框架

java - 比较和排序 hashmap java 中值的数组列表

java - WTK模拟器蓝牙连接

ios - 如何以编程方式禁用预测 View 但在 iOS 中的 TextView 上启用自动更正?

python - Bash - 如何在连接 USB 设备时运行代码

opengl - 着色器中没有名称为 'u_proj' 的制服