중심을 기준으로 회전하기
Coddy Pygame 여정의 스프라이트와 이미지 섹션에 포함된 레슨. 36개 중 6번째.
회전하는 배에는 회전한 그림이 필요합니다. pygame.transform.rotate(image, angle)은 새로운 Surface를 반환합니다. 이미지를 angle도만큼 시계 반대 방향으로 회전한 것입니다. 음수 각도는 시계 방향으로 회전합니다. 원본 이미지는 바뀌지 않습니다.
회전한 정사각형은 같은 크기의 정사각형에 들어가지 않으므로 새 Surface는 더 큽니다. 배를 45도 회전하면 90×90픽셀이 됩니다. 이전 왼쪽 위 모서리에 블릿하면 가운데가 아래와 오른쪽으로 이동합니다. 회전할 때마다 배가 화면 안에서 흔들립니다.
대신 가운데를 원래 위치에 유지하세요. 회전한 이미지에 같은 지점을 중심으로 하는 Rect를 요청합니다.
rotated = pygame.transform.rotate(ship, angle)
rotated_rect = rotated.get_rect(center=(320, 240))
screen.blit(rotated, rotated_rect)매 프레임 원본 ship을 전체 angle만큼 회전하세요. 배의 방향은 angle에 들어 있는 숫자이며, 그림은 그 값을 바탕으로 만들어집니다.
챌린지
중급- 반복문을 시작하기 전에
angle = 0으로 설정하세요. - 왼쪽 키를 누르고 있으면 매 프레임
angle에 3을 더해 반시계 방향으로 회전하고, 오른쪽 키를 누르고 있으면 3을 뺍니다. - 매 프레임
ship을angle만큼 회전시키고, 중심이(320, 240)에 오도록 결과를 그리세요.
직접 해보기
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Turn the Ship")
clock = pygame.time.Clock()
ship = pygame.image.load("assets/images/ship.png").convert_alpha()
ship_rect = ship.get_rect(center=(320, 240))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((20, 22, 40))
screen.blit(ship, ship_rect)
pygame.display.flip()
clock.tick(60)
pygame.quit()
스프라이트와 이미지의 모든 레슨
직접 연습해 보세요: Pygame 플레이그라운드