gpt4 book ai didi

java - Libgdx 将 Sprite 添加到数组并将它们绘制到屏幕上

转载 作者:行者123 更新时间:2023-12-02 03:35:42 24 4
gpt4 key购买 nike

在下面的代码中,我尝试创建一个硬币类并使其成为一个 Sprite 。我尝试将所有这些 Sprite 添加到一个数组中,然后将数组绘制到屏幕上。它不会产生任何错误,只是不会将图形打印到屏幕上。我还想知道是否可以使用 Sprite 来测试碰撞。我知道我的代码不是很好,因为它很困惑,我只是想找到解决方案。谢谢

public class Gold extends Sprite {
private SpriteBatch batch;
private TiledMap map;
private Sprite sprite;
private Boolean isCollected;

public Gold(TiledMap map, Rectangle bounds, Texture gold) {
this.map = map;

sprite = new Sprite(gold);
sprite.setSize( bounds.width / MarioBros.PPM, bounds.height / MarioBros.PPM);
sprite.setPosition(bounds.x / MarioBros.PPM, bounds.y / MarioBros.PPM);
isCollected = false;
}
<小时/>
  for (MapObject object : map.getLayers().get(5).getObjects().getByType(RectangleMapObject.class)) {
Rectangle rect = ((RectangleMapObject) object).getRectangle();

for(int i = 0; i < map.getLayers().get(5).getObjects().getCount() - 1; i++){
goldArray[i] = new Gold(map, rect, gold);
}
}
<小时/>
public void drawGold(TiledMap map){
for(int i = 0; i < map.getLayers().get(5).getObjects().getCount() - 1; i++){
goldArray[i].draw(batch);
}
}
<小时/>

在渲染中:

   mapCreator.drawGold(map);
<小时/>

编辑 - 我按照前两条建议采取了行动,现在程序输出此错误

Exception in thread "LWJGL Application" java.lang.NullPointerException
at com.alexcz.mariobros.Tools.MapCreator.<init>(MapCreator.java:77)

在这一行goldArray[i] = new Gold(rect, gold);

最佳答案

我注意到您的 Gold 类(即 Sprite )也引用了其他一些 Sprite ,而其他 Sprite 是您设置了区域的 Sprite ,而不是您正在绘制的 Sprite 。删除对 Gold 类中另一个 Sprite 的所有引用。

此外,最好不要在 Sprite 中引用 SpriteBatch 或 TiledMap。这引入了不必要的耦合,可能会导致错误信,或者只是随着代码变得更加复杂而使维护代码变得更加困难。

public class Gold extends Sprite {
private boolean isCollected; //only use a primitive wrapper if you really need one

public Gold(Rectangle bounds, Texture gold) {
super(gold);

setSize( bounds.width / MarioBros.PPM, bounds.height / MarioBros.PPM);
setPosition(bounds.x / MarioBros.PPM, bounds.y / MarioBros.PPM);
isCollected = false;
}
//...
}

关于java - Libgdx 将 Sprite 添加到数组并将它们绘制到屏幕上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37478809/

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