Всем привет!
Я недавно начал осваивать python, так что сразу прошу прощения если вопрос тупой.
Задача: отрисовывать на экране маленькую картинку (50*50 пикселов), картинка должна вращаться и центр картинки должен всегда оставаться в одной позиции.
В общем я кое-как решил данную задачу, только при вращении картинка немного дрожит (грешу на функцию pygame.transform.rotate).
Может кто посоветует как избавится от дрожания?
Вот мой код:
# -*- coding: UTF-8 -*-
import pygame
class Sprite:
def __init__(self, filename):
self.image = pygame.image.load(filename)
def render(self, screen, pos = (0, 0), angle = 0):
#Поворачиваю картинку
rot_im = pygame.transform.rotate(self.image, angle)
#Вычисляю новую позицию, иначе центр картинки сместится
ow, oh = self.image.get_size()
rw, rh = rot_im.get_size()
scale_x, scale_y = float(rw) / ow, float(rh) / oh
dx = round((ow / 2.0) * scale_x - (ow / 2.0))
dy = round((oh / 2.0) * scale_y - (oh / 2.0))
new_pos = pos - dx, pos - dy
#Отрисовываю повернутую картинку
screen.blit(rot_im, new_pos)
image = 0
pygame.init()
screen = pygame.display.set_mode((800, 600))
sprite = Sprite('box.png')
angle = 0.0
clk = pygame.time.Clock()
while True:
for e in pygame.event.get():
if e.type == pygame.QUIT: exit(0)
if e.type == pygame.KEYDOWN and e.key == pygame.K_ESCAPE: exit(0)
screen.fill((255, 255, 255))
sprite.render(screen, (0, 0), angle)
angle += 0.5
pygame.display.update()
clk.tick_busy_loop(30)