Положение мыши со смещением - PullRequest
1 голос

Я только начинаю с Python и Pygame. Я следил за этим уроком (GitHub) о том, как сделать игру на основе плиток. Я хочу реализовать отслеживание мыши, чтобы спрайт игрока всегда смотрел туда, куда указывает мышь.

В игре есть класс Camera, который компенсирует все спрайты, когда игрок движется. Мне удалось отследить мышь, но в настоящее время он показывает мне, где он находится на экране 1024 * 768, а игрок расположен, например, на 2000 * 1000. Результат: игрок смотрит из своей позиции 2000 * 1000 в какое-то место "внутри" этот экран.

Урок (GitHub)

Я хочу, чтобы положение моей мыши сдвигалось на то же количество пикселей, чтобы оно всегда оставалось внутри камеры игрока.

1 Ответ

1 голос
/ 19 мая 2019

Использование

mousex, mousey = pygame.mouse.get_pos()

Теперь вам нужно вычислить угол поворота, чтобы повернуть игрока, чтобы посмотреть на положение мыши.

Сначала вычислите вектор, на который указывает направлениев направлении положения мыши.

x = mousex - player.position.x
y = mousey - player.position.y

В результате получается вектор (x, y), направление которого указывает на положение мыши.Зачем?Потому что, когда у вас есть два вектора, в этом случае a (mousex, mousey) и b (player.position.x, player.position.y) ,

математика говорит нам, что если вы вычитаете b из , то вы создаете другую векторную величину , что ее длина - это расстояние от a до b и его направлениеточки от b до

Теперь вычислите угол (в радианах)

angle = math.atan2( x, y)

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

angle = (180 / math.pi) * (-angle) 

Теперь поверните изображение с помощью pygame.transform.rotate ()

rotated_image = pygame.transform.rotate(your_player_image, int(angle))

ВотВажно отметить, что вам нужно использовать исходное изображение, которое вы загрузили с помощью pygame.image.load () , а не то, которое вы используете для блит-проигрывателя.

Теперь применитеновое изображение для игрока:

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