我有一些精灵(嗯,实现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);
(出于某种原因,调整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);
答案 0 :(得分:0)
您的所有代码都是正确的。我自己尝试了,包括setProperty(x,y)和setPropertyX / Y(a)版本。
任何机会,你把它连接到身体吗?请注意,Body也不会使用Sprite的setScale进行缩放。它有自己的setTransform方法,它采用x和y(你必须除以PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT)和旋转值。