我能够让精灵旋转好,但是位图会向下移动很多并且会切断一些图像,尤其是向下看和任何角度时。我正在切换旋转很多的位图。例如,当你攻击它时,它会在四个攻击图像之间切换。在图像的最后一帧上,精灵剑向外并指向前方,精灵中心点与原始第一帧不同时没有攻击。我认为这应该无关紧要,因为它仍然应该从位图的中心旋转而不管英雄在哪里。或者我是否需要重置翻译点或其他内容。但如果我错了,请纠正我。这是我正在使用的代码。请指教。
public void draw(Canvas canvas, int pointerX, int pointerY) {
// setBitmap(MainGamePanel.testIcon);
if (setRotation) {
canvas.save();
m.reset();
// get rotation for ninja based off of joystick
m.setTranslate(spriteWidth / 2, spriteHeight / 2);
m.postRotate((float) GameControls.getRotation(), spriteWidth / 2,
spriteHeight / 2);
// rotate ninja
flipedSprite = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),
bitmap.getHeight(), m, true);
// set new bitmap to rotated ninja
setBitmap(flipedSprite);
setRotation = false;
canvas.restore();
}
// create the destination rectangle for the ninjas animation pointerX
// and pointerY are from the joystick moving the ninja around
destRect = new Rect(pointerX, pointerY, pointerX + spriteWidth,
pointerY + spriteHeight);
canvas.drawBitmap(bitmap, getSourceRect(), destRect, null);
}
答案 0 :(得分:0)
我通过将原始图像放大一点来修复它,以便为旋转提供更多空间。虽然不是最好的解决方案,但对我有用。