我遇到问题: 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()
方法。可能有什么问题?
答案 0 :(得分:1)
在下面的代码中:
private Image ballImage = new Image(ballTexture);
body.setUserData(ballImage);
您将Image类型的对象设置为用户数据。
这意味着你应该转换b.getUserData();进入图像,而不是实体:
Image e = (Image) b.getUserData();
Image具有从Actor继承的setPosition和setRotation方法。