libgdx bekommen Bildschirmbreite und-Höhe für 2d-Spiele

Ich bin kaum beginnen sich über die Entwicklung android-Spiele. ich versuche zu animieren, meine Elfe und ich haben dies erfolgreich gemacht, aber jetzt, dass ich das zeichnen von Schaltflächen, damit ich anfangen kann, meine Spieler bewegen, Sie sind nicht in der richtigen position, wenn Sie sein sollten. könnte mir jemand helfen?
Es sieht toll aus in der desktop-version, aber nicht auf meinem android-Handy.

dies ist mein code für die main-Klasse.

package com.Adventcloud.RealGame;

public class RealGame implements ApplicationListener {
  private OrthographicCamera camera;
private SpriteBatch batch;
//private Texture background;
private AnimatedSprite playerAnimated;

//Buttons
public static Texture leftButton;
public static Texture rightButton;
public static Texture shootButton;
public static Texture jumpButton;


@Override
public void create() {      
    int width = Gdx.graphics.getWidth();
    int height = Gdx.graphics.getHeight();

    Texture.setEnforcePotImages(false);

    camera = new OrthographicCamera();
    camera.setToOrtho(false, 1280, 720);

    leftButton = new Texture(Gdx.files.internal("leftButton.png")); 
    rightButton = new Texture(Gdx.files.internal("rightButton.png"));
    shootButton = new Texture(Gdx.files.internal("shootButton.png"));   
    jumpButton = new Texture(Gdx.files.internal("jumpButton.png"));

    batch = new SpriteBatch();

    //background = new Texture(Gdx.files.internal(""));
    Texture spaceshipTexture = new Texture(Gdx.files.internal("spritesheet.png"));
    Sprite playerSprite = new Sprite(spaceshipTexture);
    playerAnimated = new AnimatedSprite(playerSprite);
    playerAnimated.setPosition(1280/2, 0);
}

@Override
public void dispose() {
    batch.dispose();
}

@Override
public void render() {      
    Gdx.gl.glClearColor(0.95f, 0.95f, 0.95f, 0.95f);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

    batch.setProjectionMatrix(camera.combined);
    batch.begin();
        //batch.draw(background, 0, 0);
        playerAnimated.draw(batch);
        batch.draw(leftButton, 0, 0, Gdx.graphics.getWidth()/4, Gdx.graphics.getHeight()/6);
        batch.draw(rightButton, Gdx.graphics.getWidth()/4, 0, Gdx.graphics.getWidth()/4, Gdx.graphics.getHeight()/6);
        batch.draw(shootButton, (Gdx.graphics.getWidth()/4)*2, 0, Gdx.graphics.getWidth()/4, Gdx.graphics.getHeight()/6);
        batch.draw(jumpButton, (Gdx.graphics.getWidth()/4)*3, 0, Gdx.graphics.getWidth()/4, Gdx.graphics.getHeight()/6);
    batch.end();
}

@Override
public void resize(int width, int height) {
}

@Override
public void pause() {
}

@Override
public void resume() {
}
}

hier ist mein code für meine animierten sprite

package com.Adventcloud.RealGame;

public class AnimatedSprite {
private static final int FRAME_COLS = 16;
private static final int FRAME_ROWS = 16;

private static final int IDLE_COLS = 4;
private static final int IDLE_ROWS = 1;

private Sprite sprite;
private Animation animation;
private TextureRegion[] frames;
private TextureRegion currentFrame;

private float stateTime;

public AnimatedSprite(Sprite sprite){
    this.sprite = sprite;
    Texture texture = sprite.getTexture();
    TextureRegion[][] temp = TextureRegion.split(texture, texture.getWidth() /FRAME_COLS, texture.getHeight() /FRAME_ROWS);
    frames = new TextureRegion[IDLE_COLS * IDLE_ROWS];
    //Animation for idling ======================================
    int index = 0;
    for (int i = 0; i < IDLE_ROWS; i++) {
        for (int j = 1; j <= IDLE_COLS; j++) {
            frames[index++] = temp[i][j];
        }
    }
    animation = new Animation(0.2f, frames);
    stateTime = 0f;
    //end of idle animation ====================================
}

public void draw(SpriteBatch spriteBatch) {
    stateTime += Gdx.graphics.getDeltaTime();
    //continue to keep looping
    currentFrame = animation.getKeyFrame(stateTime, true);

    spriteBatch.draw(currentFrame,  sprite.getX() - 32, sprite.getY() + 128, 128, 128);
}

public void setPosition(float x, float y){
    float widthOffset = sprite.getWidth() /FRAME_COLS;
    sprite.setPosition(x- widthOffset /2, y);
}
}
InformationsquelleAutor Doctor06 | 2014-03-10
Schreibe einen Kommentar