Java 碰撞矩形不工作libgdx

Java 碰撞矩形不工作libgdx,java,libgdx,game-physics,Java,Libgdx,Game Physics,我正试图让我的碰撞矩形工作。为了调试一些问题,我一直在打印位置getX()和getY(),以确定碰撞框的位置。但由于某些原因,它似乎并没有更新(不断地说0.0,即使子弹正在发射) 这是Bullet构造函数,我首先: public Bullet(float spriteX, float spriteY, int playerDirection){ this.position = new Vector2(spriteX, spriteY); this.bulletDirection

我正试图让我的碰撞矩形工作。为了调试一些问题,我一直在打印位置getX()和getY(),以确定碰撞框的位置。但由于某些原因,它似乎并没有更新(不断地说0.0,即使子弹正在发射)

这是Bullet构造函数,我首先:

public Bullet(float spriteX, float spriteY, int playerDirection){
    this.position = new Vector2(spriteX, spriteY);
    this.bulletDirection = Player.playerDirection;
    try{
        img = new Texture(Gdx.files.internal("bullet-green-icon.png"));
        sprite = new Sprite(img);
    } catch (Exception e){
        e.printStackTrace();
    }
    collisionBoxBullet = sprite.getBoundingRectangle();
    System.out.println("collision bullet box: x" +collisionBoxBullet.getX());
    System.out.println("collision bullet box: y" +collisionBoxBullet.getY());

}
这两条打印线的计算结果为0.0,这让我很困惑,因为项目符号坐标应该基于精灵的坐标。在这里,它在player类中被称为:

else if (gip.keyDown(Keys.SPACE)){
            Bullet bullet = new Bullet(sprite.getX(), sprite.getY(), playerDirection);
            Main.currentBullets.add(bullet);

        }
据我所知,我正在创建子弹,创建子弹精灵,在它周围环绕一个矩形。那么为什么它显示它的矩形坐标为0.0/0.0,而精灵的坐标为250/150呢

在这里,每当项目符号移动时,我都会更新矩形(项目符号确实在屏幕上移动)

公共静态无效更新(float dt、ArrayList项目符号、SpriteBatch批处理){
对于(int i=0;i

从这里我可以看出,精灵被绘制到一个新的位置,然后又在它周围做了一个矩形。为什么它一直说它在0.0/0.0?

可能会误解一些东西,因为我不熟悉所涉及的库,但在您的代码的哪一行是精灵的x和y位置集?我所看到的只是
sprite=新精灵(img);
大概一个新实例化的精灵的x和y==0.0?哦,呜呜,忘记设置精灵的位置了!现在工作!谢谢(尴尬的哈哈)
public static void update(float dt, ArrayList<Bullet> bullets, SpriteBatch batch){

    for (int i = 0; i < bullets.size(); i++){
        if (bullets.get(i).bulletDirection == 1){
            bullets.get(i).position.y += bullets.get(i).velocity * dt;
            bullets.get(i).collisionBoxBullet = bullets.get(i).sprite.getBoundingRectangle();
            batch.draw(bullets.get(i).sprite, bullets.get(i).position.x,
                     bullets.get(i).position.y);

        }
        else if (bullets.get(i).bulletDirection == 2){
            bullets.get(i).position.y -= bullets.get(i).velocity * dt;
            batch.draw(bullets.get(i).sprite, bullets.get(i).position.x, 
                 bullets.get(i).position.y);
            bullets.get(i).collisionBoxBullet = bullets.get(i).sprite.getBoundingRectangle();
        }
        else if (bullets.get(i).bulletDirection == 3){
            bullets.get(i).position.x -= bullets.get(i).velocity * dt;
            batch.draw(bullets.get(i).sprite, bullets.get(i).position.x, 
               bullets.get(i).position.y);
            bullets.get(i).collisionBoxBullet = bullets.get(i).sprite.getBoundingRectangle();
        }
        else if (bullets.get(i).bulletDirection == 4){
            bullets.get(i).position.x += bullets.get(i).velocity * dt;
            batch.draw(bullets.get(i).sprite, bullets.get(i).position.x, 
              bullets.get(i).position.y);
            bullets.get(i).collisionBoxBullet = bullets.get(i).sprite.getBoundingRectangle();
        }