Link 在您的精灵或游戏对象与 Box2D 之间

Link between your sprites or game objects and Box2D

我有一个问题:在 libgdx 文档中关于 box2d (libgdx box2d)在 Sprites and Bodies 部分,解释了如何在精灵或游戏对象与 Box2D 之间设置 link,但是当我试图获得 setPosition方法,我获取不到(我的Entity对象e没有setPosition这样的方法)。

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

代码:

In show() method

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

In render() method

// 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); 行停了下来,因为我无法在 e 对象中获取 setPosition() 方法。可能有什么问题?

在下面的代码中:

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

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

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

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

Image 继承自 Actor 的 setPosition 和 setRotation 方法。