gpt4 book ai didi

java - 绘制时 Sprite 不显示

转载 作者:行者123 更新时间:2023-11-30 01:03:59 28 4
gpt4 key购买 nike

我正在尝试使用 LibGDX 构建安卓游戏。这是我的第一个 Android 应用程序,如果我的要求很简单,请原谅我。我正在尝试绘制 Sprite ,但似乎什么也没有出现。我在想,也许 Sprite 是在相机空间之外绘制的,但即使我把相机拿回来(显示在游戏区域之外),我也看不到 Sprite 。我花了很长时间试图找到问题所在,但一直没能找到。这是我的 Playstate 类(class):

public class PlayState extends State{
private Man man;
private Cannon cannon;
private Texture cannontop;
private Texture bg;
private SpriteBatch sb;

public PlayState(GameStateManager gsm) {
super(gsm);
cannon = new Cannon();
cannontop = new Texture("Cannon.png");
man = new Man(0, (Gdx.graphics.getHeight() / 4));
bg = new Texture("background.png");
cam.setToOrtho(false, 2160, 3840);

}

@Override
protected void handleInput() {
// finish later

}

@Override
public void update(float dt) {
man.update(dt);
//cannon.update();
}

public void create(){
sb = new SpriteBatch();
}

@Override
public void render(SpriteBatch sb) {
sb.setProjectionMatrix(cam.combined);
sb.begin();
sb.draw(bg, cam.position.x - (cam.viewportWidth / 2), 0);
sb.draw(man.getTexture(), man.getPosition().x, man.getPosition().y);
//sb.draw(cannon.getTexture(), cannon.getPositionx(), cannon.getPositiony());
cannon.getCannon().draw(sb);
sb.draw(cannontop, (bg.getWidth()/ 2) - (cannon.getTextureWidth() / 2) - 23, (bg.getHeight() / 2) + (bg.getHeight() / 5));
//sb.draw(cannon.getTexture(), (bg.getWidth()/ 2) - (cannon.getTextureWidth() / 2), (bg.getHeight() / 2) + (bg.getHeight() / 5) - (cannontop.getWidth() / 2) + 8);
sb.end();

}

@Override
public void dispose() {
bg.dispose();
man.dispose();
cannon.dispose();
}
}

我要绘制的 Sprite 在大炮类中。这是我的大炮课:

public class Cannon {
private Texture cannend;
private Texture bg;
private Texture cannonmain;
private SpriteBatch batch;
private Sprite cannon;


public Cannon(){
cannonmain = new Texture("Cannon.png");
bg = new Texture ("background.png");
cannend = new Texture("cannonend.png");
cannon = new Sprite(cannend, (bg.getWidth()/ 2) - (cannend.getWidth() / 2), (bg.getHeight() / 2) + (bg.getHeight() / 5) - (cannonmain.getWidth() / 2) + 8, (cannend.getWidth()), (cannend.getHeight()));
cannon.setPosition((bg.getWidth()/ 2) - (cannend.getWidth() / 2), (bg.getHeight() / 2) + (bg.getHeight() / 5) - (cannonmain.getWidth() / 2) + 8);
cannon.setRotation(70);
cannon.setCenter((bg.getWidth()/ 2) , (bg.getHeight() / 2) + (bg.getHeight() / 5) + 3*(cannend.getHeight() / 4));
}
//public update(dt){
// stuffff
// }


public Sprite getCannon(){
return cannon;
}

public float getPositionx(){
return cannon.getX();
}

public float getPositiony(){
return cannon.getY();
}

public void dispose(){
cannonmain.dispose();
cannend.dispose();
bg.dispose();
}

public Texture getTexture(){
return cannend;
}

public float getTextureWidth(){
return cannend.getWidth();
}
}

我很抱歉 Sprite /纹理名称令人困惑。请忽略这些评论,因为它们是为我尝试过的 future /替代事物而存在的。我想知道如何让 Sprite 出现。另外, Sprite 出现后会旋转吗?非常感谢任何帮助。谢谢。

状态类:

public abstract class State {
protected OrthographicCamera cam;
protected Vector3 mouse;
protected GameStateManager gsm;

protected State(GameStateManager gsm) {
this.gsm = gsm;
cam = new OrthographicCamera();
mouse = new Vector3();

}


protected abstract void handleInput();
public abstract void update(float dt);
public abstract void render(SpriteBatch sb);
public abstract void dispose();


}

最佳答案

您应该使用 sprite.draw(spritebatch) 绘制您的 Sprite ,而不是 spritebatch.draw(sprite)

另外,State类有什么用呢? Playstate 应该是一个屏幕吗?然后你应该在你的类中实现 Screen 接口(interface),然后它会使用你想要的方法,比如'render','dispose',...

关于java - 绘制时 Sprite 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39066592/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com