Libgdx java精灵大小问题

时间:2015-04-17 13:23:31

标签: java libgdx sprite scaling

所以我正在创建一个精灵并使用不同的类将其绘制到屏幕上。

我现在想在每个屏幕上将其缩放为相同的宽高比/大小。

我尝试过使用此代码:

public Player(Vector2 position, float width, float height, float rotation, float speed) 
{


    super(speed, rotation, width, height, position);

}

public void update() 
{

    width = Gdx.graphics.getWidth() / 10;

    height = Gdx.graphics.getHeight() / 10;


}

但这不起作用,它什么都不做。

我也尝试将宽度和高度设置为静态值,例如100比100.但这也不起作用。

感谢您的帮助! :)

修改:添加基类和派生类:

以下是Entity类的代码:

public abstract class Entity {

    public void setPosition(Vector2 position) {
        this.position = position;
    }

    public float getWidth() {
        return width;
    }

    public void setWidth(float width) {
        this.width = width;
    }

    public float getHeight() {
        return height;
    }

    public void setHeight(float height) {
        this.height = height;
    }

    public Rectangle getBounds() {
        return bounds;
    }

    public void setBounds(Rectangle bounds) {
        this.bounds = bounds;
    }
}

以下是MoveEntity类的代码:

public MoveEntity(float speed, float rotation, 
                  float width, float height, 
                  Vector2 position) {

    super(position, width, height);


    this.speed    = speed; 
    this.rotation = rotation; 
    vel           = new Vector2(0, 0); 

    } 

    public Vector2 getVel() { 
        return vel; 
    } 

    public void setVel(Vector2 target) { 
        this.vel = target; 
    } 

    public float getRotation() { 
        return rotation; 
    } 

    public void setRotation(float r) {
    ..............///

1 个答案:

答案 0 :(得分:1)

也许它不会说英语,但你谈论一个精灵,我也不会看到他的任何网站。

假设这是你引用的精灵 - > spr_player

您可以通过多种方式执行此操作,但基于您发布的这行代码

变量类。 (用于测试):

float width  = Gdx.graphics.getWidth() / 10;
float height = Gdx.graphics.getHeight() / 10;

尝试使用它:

sb.draw(spr_player, p.getPosition().x, p.getPosition().y
        width, height);
  

这是Class SpriteBatch中的功能:

public void draw (Texture texture, float x, float y, 
                  float width, float height)

你也可以在Sprite类中使用setSize,在渲染之前的某个地方。

spr_player.setSize(width, height);
  

这是Class Sprite中的功能:

public void setSize (float width, float height)

如果在游戏过程中大小不会改变,你可以调用setSize,在创建或显示的方法中,或者在构造函数中调用这种方式,如果你想要的结果:

Sprite spr_player = new Sprite (your_texture, width, height);
  

这是Class Sprite中的功能:

public Sprite (Texture texture, int srcWidth, int srcHeight)