libgdx获取2D游戏的屏幕宽度和高度

医生06

我刚开始开发Android游戏。我正在尝试为Sprite制作动画,并且我已经成功地完成了此操作,但是现在我通过按钮进行绘制,这样我就可以开始移动播放器了,它们应该处于正确的位置。有人可以帮我吗?在桌面版本上看起来不错,但在我的Android手机上却不行。

这是我的主要课程代码。

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() {
}
}

这是我的动画精灵的代码

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);
}
}
Springrbua

这实际上是相机的用途(至少其中之一)。您可以使用自定义视口,它将按比例放大以适合屏幕/窗口。例如,如果您希望宽高比为16/9,并且屏幕的宽度应为80个“世界单位”(也许是米?),那么请使用80宽度和45高度的视口。因此,请使用“camera = new OrthographicCamera(80, 45);创建一个摄像机”,该摄像机的宽度为80个单位,高度为45个单位,中间为P(0,0)。通过这样做一Texture,大小的1,是20px宽和20px高一上1600*900px屏幕,10px宽,10px高一上800*450px屏幕。在坐标P(0,0)处绘制对象将在屏幕中间绘制其左下角,在P(-40,0)处进行绘制将在屏幕左边界处绘制对象。不要忘记告诉SpriteBatch 使用此相机:

spriteBatch.setProjectionMatrix(camera.combined);

要移动相机,请使用camera.translate(deltaX, deltaY);如果您移动相机或旋转相机或执行其他操作,则更改其矩阵的操作不会忘记调用camera.update()

现在,您可以计算“ worldunits”中的所有内容,并将其放大以适合屏幕大小。希望我能帮上忙

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

libgdx获取2D游戏的屏幕宽度和高度

来自分类Dev

如何获取屏幕的宽度和高度-Android

来自分类Dev

获取报告的屏幕宽度和高度

来自分类Dev

如何在Libgdx中设置屏幕的宽度和高度?

来自分类Dev

libgdx最佳高度和宽度

来自分类Dev

如何在SwiftUI中获取视图或屏幕的高度和宽度

来自分类Dev

在iOS中,如何获取屏幕的高度和宽度,包括在横向模式下宽度大于高度?

来自分类Dev

在Unity 2d中使用坐标系和游戏屏幕吗?

来自分类Dev

如何在 webgl 上渲染具有指定宽度和高度的 2d 精灵

来自分类Dev

根据屏幕宽度和高度更改div宽度和高度

来自分类Dev

如何使div的高度和宽度等于屏幕的宽度和高度?

来自分类Dev

Java 2D游戏引擎,LibGdx指示灯

来自分类Dev

在CreateResources期间如何获取Win2D CanvasBitmap的宽度和高度?

来自分类Dev

在CreateResources期间如何获取Win2D CanvasBitmap的宽度和高度?

来自分类Dev

2D“游戏”开发:游戏逻辑和绘图的坐标

来自分类Dev

获取ViewPager的宽度和高度

来自分类Dev

Android:如何查找屏幕的宽度和高度?

来自分类Dev

正确定位(屏幕宽度和高度)

来自分类Dev

让div保持屏幕的宽度和高度

来自分类Dev

如何在Windows Phone 8.1中获取屏幕分辨率(宽度和高度)?

来自分类Dev

如何在Windows Phone 8.1中获取屏幕分辨率(宽度和高度)?

来自分类Dev

带有2D逻辑的3D游戏的Libgdx scene2d吗?

来自分类Dev

带有2D逻辑的3D游戏的Libgdx scene2d吗?

来自分类Dev

Java 2D游戏-MouseClicked和MouseMoved方法

来自分类Dev

以编程方式获取布局的高度和宽度

来自分类Dev

动态获取布局的高度和宽度

来自分类Dev

获取组件的实际宽度和高度

来自分类Dev

获取父级的宽度和高度

来自分类Dev

在Pygame中获取图像的宽度和高度

Related 相关文章

  1. 1

    libgdx获取2D游戏的屏幕宽度和高度

  2. 2

    如何获取屏幕的宽度和高度-Android

  3. 3

    获取报告的屏幕宽度和高度

  4. 4

    如何在Libgdx中设置屏幕的宽度和高度?

  5. 5

    libgdx最佳高度和宽度

  6. 6

    如何在SwiftUI中获取视图或屏幕的高度和宽度

  7. 7

    在iOS中,如何获取屏幕的高度和宽度,包括在横向模式下宽度大于高度?

  8. 8

    在Unity 2d中使用坐标系和游戏屏幕吗?

  9. 9

    如何在 webgl 上渲染具有指定宽度和高度的 2d 精灵

  10. 10

    根据屏幕宽度和高度更改div宽度和高度

  11. 11

    如何使div的高度和宽度等于屏幕的宽度和高度?

  12. 12

    Java 2D游戏引擎,LibGdx指示灯

  13. 13

    在CreateResources期间如何获取Win2D CanvasBitmap的宽度和高度?

  14. 14

    在CreateResources期间如何获取Win2D CanvasBitmap的宽度和高度?

  15. 15

    2D“游戏”开发:游戏逻辑和绘图的坐标

  16. 16

    获取ViewPager的宽度和高度

  17. 17

    Android:如何查找屏幕的宽度和高度?

  18. 18

    正确定位(屏幕宽度和高度)

  19. 19

    让div保持屏幕的宽度和高度

  20. 20

    如何在Windows Phone 8.1中获取屏幕分辨率(宽度和高度)?

  21. 21

    如何在Windows Phone 8.1中获取屏幕分辨率(宽度和高度)?

  22. 22

    带有2D逻辑的3D游戏的Libgdx scene2d吗?

  23. 23

    带有2D逻辑的3D游戏的Libgdx scene2d吗?

  24. 24

    Java 2D游戏-MouseClicked和MouseMoved方法

  25. 25

    以编程方式获取布局的高度和宽度

  26. 26

    动态获取布局的高度和宽度

  27. 27

    获取组件的实际宽度和高度

  28. 28

    获取父级的宽度和高度

  29. 29

    在Pygame中获取图像的宽度和高度

热门标签

归档