помощь вращения в андроид - PullRequest
0 голосов
/ 20 марта 2011

Я могу заставить спрайт нормально вращаться, однако растровое изображение сильно смещается вниз и обрезает часть изображения, особенно если смотреть вниз и под любым углом.Я переключаю растровое изображение, которое часто поворачивается.Как, например, когда вы атакуете, он переключается между четырьмя атакующими изображениями.На последнем кадре изображения меч спрайтов находится наружу и направлен вперед, а центральная точка спрайтов не совпадает с исходным первым кадром, когда он не атаковал.У меня сложилось впечатление, что это не должно иметь значения, потому что оно все равно должно вращаться из центра растрового изображения, а не важно, где находится герой.Или мне нужно сбросить точку перевода или еще что-то.Но, пожалуйста, поправьте меня, если я ошибаюсь.Вот код, который я использую.Пожалуйста, порекомендуйте.

  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();
        }</p>

<code>    // 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);

}
</code>

1 Ответ

0 голосов
/ 20 марта 2011

Я исправил это, сделав исходное изображение немного больше, чтобы дать ему больше места для вращения.Хотя это и не лучшее решение, но оно работает для меня.

...