1

我有一些我调整大小的精灵(好吧,实现的自定义类Sprite,但无论如何)。AndEngine 从中心调整图像大小,这使得放置在 0,0 的图像不再出现在 0,0。为了解决这个问题,我申请了

    sprite.setScaleCenterX(0);
    sprite.setScaleCenterY(0);

这会将图像放置在我想要的位置。但是,现在当我旋转图像时,图像会四处移动(如果图像是一个普通的正方形,旋转它应该不会产生明显的变化)。为了解决这个问题,我申请了

    sprite.setRotationCenterX((sprite.getWidth() * sprite.getScaleX()) / 2);
    sprite.setRotationCenterY((sprite.getHeight() * sprite.getScaleY()) / 2);

(出于某种原因,调整 a 的大小Sprite不会改变精灵的尺寸,只会改变视觉图像,因此将其乘以比例)。然而,这并没有纠正问题,而只是改变了图像在翻转时移动到的位置。

我的数学在这里吗?这不会使图像的旋转居中以使图像不移动位置吗?还是我还缺少其他东西?

以下是完整代码:

    Sprite sprite = new Sprite(0, 0, singleTrackTR, getVertexBufferObjectManager());
    sprite.setScale(scaleX, scaleY);
    sprite.setScaleCenterX(0);
    sprite.setScaleCenterY(0);
    sprite.setRotationCenterX((sprite.getWidth() * sprite.getScaleX()) / 2);
    sprite.setRotationCenterY((sprite.getHeight() * sprite.getScaleY()) / 2);
4

1 回答 1

0

你所有的代码都是正确的。我自己尝试了 setProperty(x, y) 和 setPropertyX/Y(a) 版本。

有没有机会,你把它连接到一个身体?请注意,Body 也不会随 Sprite 的 setScale 缩放。它有自己的 setTransform 方法,该方法采用 x 和 y(您都必须除以 PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT)和旋转值。

于 2013-02-01T07:10:01.870 回答