您的精灵或游戏对象与Box2D之间的链接

时间:2016-02-11 04:07:50

标签: java libgdx box2d

我遇到问题: libgdx 文档 box2d libgdx box2d {{ 1}} ,有解释如何设置精灵或游戏对象与Box2D之间的链接,但是当我试图获得 Sprites and Bodies 方法时,我不能得到它(我的实体对象setPosition没有像e)这样的方法。

我不明白我应该在这里使用哪种类型的实体(是libgdx实体还是Java实体类)?

  

在show()方法中

setPosition
  

在render()方法中

private Texture ballTexture = new Texture("images/ball.png");  
private Image ballImage = new Image(ballTexture);
body.setUserData(ballImage);
stage.add(ballImage);

我在第// Create an array to be filled with the bodies // (better don't create a new one every time though) Array<Body> bodies = new Array<Body>(); // Now fill the array with all bodies world.getBodies(bodies); for (Body b : bodies) { // Get the body's user data - in this example, our user // data is an instance of the Entity class Entity e = (Entity) b.getUserData(); if (e != null) { // Update the entities/sprites position and angle e.setPosition(b.getPosition().x, b.getPosition().y); // We need to convert our angle from radians to degrees e.setRotation(MathUtils.radiansToDegrees * b.getAngle()); } } stage.act(); stage.render(); 行停了下来,因为我无法在e.setPosition(b.getPosition().x, b.getPosition().y);对象中获得setPosition()方法。可能有什么问题?

1 个答案:

答案 0 :(得分:1)

在下面的代码中:

private Image ballImage = new Image(ballTexture);
body.setUserData(ballImage);

您将Image类型的对象设置为用户数据。

这意味着你应该转换b.getUserData();进入图像,而不是实体:

Image e = (Image) b.getUserData();

Image具有从Actor继承的setPosition和setRotation方法。