Как повернуть объект из центра в пичарм? - PullRequest
2 голосов
/ 17 октября 2019

Я пытаюсь повернуть изображение в pycharm, по какой-то причине, когда я вращаюсь, объект колеблется и не вращается на месте.

class rocket(object):
def __init__(self, x, y):
    self.original_image = pygame.image.load('sprites/spaceship-off.png')
    self.image = self.original_image
    self.x = x
    self.y = y
    self.width = 50
    self.height = 50
    self.speed = 15
    self.angle = 0
    self.direction = [0, -1]
    self.position = [400, 400]

def draw(self, win):
    win.blit(self.image, (self.position))
    self.image = pygame.transform.rotate(self.original_image, self.angle)

-

if keys[pygame.K_a] and player.x > player.speed:
    player.angle += 10 % 360
if keys[pygame.K_d] and player.x < 800 - player.width - player.speed:
    player.angle -= 10 % 360

1 Ответ

1 голос
/ 17 октября 2019

Если вы хотите повернуть изображение вокруг его центра, то вы должны:

  • получить точку поворота (которая является центральной точкой не повернутого изображения)
  • поверните изображение и возьмите прямоугольник (с выравниванием по оси) повернутого изображения
  • отцентрируйте прямоугольник относительно оси
  • blit изображение в левом верхнем углу нового прямоугольника
def draw(self, win):

    image_rect = self.original_image.get_rect(topleft = self.position)
    pivot = image_rect.center

    self.image = pygame.transform.rotate(self.original_image, self.angle)
    rotated_rect = self.image.get_rect(center = pivot)

    win.blit(self.image, rotated_rect.topleft)

См. Также Как повернуть изображение вокруг его центра с помощью Pygame?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...