所以我正在创建一个精灵并使用不同的类将其绘制到屏幕上。
我现在想在每个屏幕上将其缩放为相同的宽高比/大小。
我尝试过使用此代码:
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) {
..............///
答案 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)