Проблема возникает, потому что код не обрабатывает поворот персонажа при перемещении. Вам нужно добавить соответствующую логику для обработки поворота вместе с перемещением.
Одним из способов решить эту проблему является использование переменной, которая будет хранить текущий угол поворота персонажа. Затем при перемещении персонажа вы можете обновить его позицию, а затем использовать функцию `pygame.transform.rotate()` для поворота его изображения на текущий угол.
Вот пример кода, который может помочь вам решить эту проблему:
```
import pygame
import math
# Инициализация Pygame
pygame.init()
# Определение цветов
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
# Создание окна
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Персонаж, перемещение и поворот")
# Загрузка изображения персонажа
character_img = pygame.image.load("character.png")
character_rect = character_img.get_rect()
# Первоначальное местоположение персонажа
character_rect.center = (400, 300)
# Угол поворота персонажа
angle = 0
# Основной цикл игры
running = True
while running:
# Обработка событий
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Получение состояния клавиш
keys = pygame.key.get_pressed()
# Перемещение персонажа
if keys[pygame.K_LEFT]:
character_rect.x -= 5
if keys[pygame.K_RIGHT]:
character_rect.x += 5
if keys[pygame.K_UP]:
character_rect.y -= 5
if keys[pygame.K_DOWN]:
character_rect.y += 5
# Поворот персонажа
if keys[pygame.K_a]:
angle += 5 # увеличиваем угол поворота на 5 градусов
if keys[pygame.K_d]:
angle -= 5 # уменьшаем угол поворота на 5 градусов
# Очистка экрана
screen.fill(BLACK)
# Поворот и отображение персонажа
rotated_character = pygame.transform.rotate(character_img, angle)
rotated_rect = rotated_character.get_rect(center=character_rect.center)
screen.blit(rotated_character, rotated_rect)
# Обновление экрана
pygame.display.flip()
# Завершение Pygame
pygame.quit()
```
В этом примере мы используем переменную `angle` для хранения угла поворота персонажа. При нажатии клавиш "a" и "d" мы увеличиваем и уменьшаем угол соответственно. Затем мы используем функцию `pygame.transform.rotate()` для поворота изображения персонажа на текущий угол. После этого мы направляем его в центр позиции персонажа с помощью `get_rect(center=character_rect.center)` и отображаем его на экране.