Libgdx java 精灵大小问题
Libgdx java sprite size issue
所以我正在创建一个精灵并使用不同的class将其绘制到屏幕上。
我现在想在每个屏幕上将其缩放为相同的纵横比 ratio/size。
我试过使用以下代码来做到这一点:
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 x 100。但这也不起作用。
感谢您的帮助! :)
编辑: 添加基础和衍生 classes:
这是实体的代码 class:
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 的代码 class:
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) {
..............///
可能是不会说英文,不过你说个sprite我也没看到他什么网站,反正。
假设这是您所指的精灵 -> spr_player
您可以通过多种方式执行此操作,但要基于您发布的这行代码
变量class。 (用于测试):
float width = Gdx.graphics.getWidth() / 10;
float height = Gdx.graphics.getHeight() / 10;
尝试使用这个:
sb.draw(spr_player, p.getPosition().x, p.getPosition().y
width, height);
this is the funtion in the Class SpriteBatch:
public void draw (Texture texture, float x, float y,
float width, float height)
您也可以在 Sprite class 渲染之前的某处使用 setSize。
spr_player.setSize(width, height);
this is the funtion in the Class Sprite:
public void setSize (float width, float height)
如果在游戏过程中大小可能不会改变,可以在创建或显示方法中调用setSize,或者在构造函数中这样调用,如果你想要的结果:
Sprite spr_player = new Sprite (your_texture, width, height);
this is the funtion in the Class Sprite:
public Sprite (Texture texture, int srcWidth, int srcHeight)
所以我正在创建一个精灵并使用不同的class将其绘制到屏幕上。
我现在想在每个屏幕上将其缩放为相同的纵横比 ratio/size。
我试过使用以下代码来做到这一点:
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 x 100。但这也不起作用。
感谢您的帮助! :)
编辑: 添加基础和衍生 classes:
这是实体的代码 class:
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 的代码 class:
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) {
..............///
可能是不会说英文,不过你说个sprite我也没看到他什么网站,反正。
假设这是您所指的精灵 -> spr_player
您可以通过多种方式执行此操作,但要基于您发布的这行代码
变量class。 (用于测试):
float width = Gdx.graphics.getWidth() / 10;
float height = Gdx.graphics.getHeight() / 10;
尝试使用这个:
sb.draw(spr_player, p.getPosition().x, p.getPosition().y
width, height);
this is the funtion in the Class SpriteBatch:
public void draw (Texture texture, float x, float y, float width, float height)
您也可以在 Sprite class 渲染之前的某处使用 setSize。
spr_player.setSize(width, height);
this is the funtion in the Class Sprite:
public void setSize (float width, float height)
如果在游戏过程中大小可能不会改变,可以在创建或显示方法中调用setSize,或者在构造函数中这样调用,如果你想要的结果:
Sprite spr_player = new Sprite (your_texture, width, height);
this is the funtion in the Class Sprite:
public Sprite (Texture texture, int srcWidth, int srcHeight)