2015-10-20 42 views
0
int amoumt = 10; 
    int i = 1; 
    while (i < amoumt+1) 
      { 
        box(1);//body 
        i++; 
      } 

如果我使用这个方法,我会得到9个身体胜过一个精灵和一个没有精灵的身体。 但我的魔杖精灵上所有的人都Libgdx有一个没有雪碧的身体

在渲染方法,对绘制精灵每个体:

batch.begin(); 
          world.getBodies(worldBodies); 
          for (Body body : worldBodies) { 
          if (body.getUserData() instanceof Sprite) { 
          Sprite sprite = (Sprite) body.getUserData(); 
          Vector2 position = body.getPosition(); 
          sprite.setPosition(position.x - sprite.getWidth()/2,position.y - sprite.getHeight()/2); 
          sprite.setRotation(body.getAngle() * MathUtils.radiansToDegrees); 
          sprite.draw(batch); 
          } 
          } 
          batch.end(); 
         } 

身体:

private Body box(float a) 
        { 
          BodyDef bodyDef = new BodyDef(); 
          bodyDef.position.set(0,0); 
          bodyDef.type = BodyType.DynamicBody; 
          PolygonShape polygonShape=new PolygonShape(); 
          polygonShape.setAsBox(a,a); 
          FixtureDef fixtureDef = new FixtureDef(); 
          fixtureDef.shape=polygonShape; 
          fixtureDef.density=2; 
          fixtureDef.restitution=0.5f; 
          fixtureDef.friction=0.5f; 
          Body box=world.createBody(bodyDef); 
          box.createFixture(fixtureDef); 
          box.setUserData(sprite); 
          sprite = new Sprite(new Texture("android.jpg")); 
          sprite.setSize(a*2,a*2); 
          sprite.setOrigin(sprite.getWidth()/2, sprite.getHeight()/2); 
          worldBodies = new Array<Body>(); 

          return box; 
        } 

enter image description here

+0

请包含更多的源代码来帮助解释你的box()方法的作用。如果这是您创建“身体”的地方,那么很可能出现问题所在。另外,你使用Box2D吗? – Samich

+0

@Samich我编辑了更多信息的帖子 –

回答

1

从我所知道的情况来看,当你创建第一个用户数据时,你所设置的精灵并没有被初始化框。在将用户数据设置为精灵之前,请尝试移动sprite = new sprite初始行。

1

我认为这将解决您的问题

private Body box(float a) 
{ 
     BodyDef bodyDef = new BodyDef(); 
     bodyDef.position.set(0,0); 
     bodyDef.type = BodyType.DynamicBody; 
     PolygonShape polygonShape=new PolygonShape(); 
     polygonShape.setAsBox(a,a); 
     FixtureDef fixtureDef = new FixtureDef(); 
     fixtureDef.shape=polygonShape; 
     fixtureDef.density=2; 
     fixtureDef.restitution=0.5f; 
     fixtureDef.friction=0.5f; 
     Body box=world.createBody(bodyDef); 
     box.createFixture(fixtureDef); 
     sprite = new Sprite(new Texture("android.jpg")); 
     sprite.setSize(a*2,a*2); 
     sprite.setOrigin(sprite.getWidth()/2, sprite.getHeight()/2); 
     box.setUserData(sprite); 
     worldBodies = new Array<Body>(); 

     return box; 
} 

,希望对您有所帮助!