Задать вопрос

Как в python pygame как сделать чтобы объект поворачивался до курсора мыши?

Как в python pygame как сделать чтобы объект поворачивался до курсора мыши?
Что-то было тут вопрос. но мне нечего не понятно! Кто-то может дать мне код(на скретче можно сделать это вот так:608b006e0d701254714995.png)?(то что я пробивал:
import pygame
import pygame as pg
import sys
import ctypes
from random import *
import time
import tkinter as tk
from PIL import ImageGrab
import os
import math
print(os.getcwd())
FPS = 60
W = 900  # ширина экрана
H = 900  # высота экрана
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
BLUE = (0, 70, 225)
BLACK = (0, 0, 0)
RED = (220, 0, 0)
DARKGRAY = (40, 40, 40)
PURPLE = (120, 0, 120)
BROWN = (148, 19, 19)
ORANGE = (255, 179, 0)
pg.init()
clock = pygame.time.Clock()
camera = bool(input())
if camera == True:
    sc = pygame.display.set_mode((W, H))
else:
    sc = pygame.display.set_mode((W, H), pygame.FULLSCREEN)

bmp = "ball.png"
bmp_дерево = pygame.image.load(bmp)
bmp_дерево.set_colorkey((255, 255, 255))
bmp_image = bmp_дерево.get_rect(center=(150, 700))
sc.blit(bmp_дерево, bmp_image)
def rotate(oject2):
    mouse_x, mouse_y = pygame.mouse.get_pos()
    rel_x, rel_y = mouse_x - 0, mouse_y - 0
    angle = (180 / math.pi) * -math.atan2(rel_y, rel_x)
    return angle
while 1:
    sc.fill((110, 180, 110))
    for i in pygame.event.get():
        if i.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    bmp_дерево = pygame.transform.rotate(bmp_дерево, rotate(bmp_image))
    bmp_image = bmp_дерево.get_rect(center=(150, 700))
    sc.blit(bmp_дерево, bmp_image)
    pressed = pygame.mouse.get_pressed()
    pos = pygame.mouse.get_pos()
    pygame.draw.rect(sc, GREEN, (pos[0] - 10, pos[1] - 10, 20, 20))
    pygame.display.update()
    pygame.time.delay(20)
    clock.tick(FPS)
, но мяч просто стоит и иногда еле-ели вертится!)
  • Вопрос задан
  • 1249 просмотров
Подписаться 1 Средний 6 комментариев
Решения вопроса 1
@o5a
Проблем 2.
1. Вращать нужно оригинал изображения, а не уже измененную предыдущем вращением копию. Из-за этого будет забиваться память, и скорее всего поэтому он
иногда еле-ели вертится!)

Т.е. сменить примерно так:
bmp_дерево_rot = pygame.transform.rotate(bmp_дерево, rotate(bmp_image))
bmp_image = bmp_дерево_rot.get_rect(center=(150, 700))
sc.blit(bmp_дерево_rot, bmp_image)

2. Для расчета угла вращения нужно помимо координат мыши указывать и правильные координаты самой картинки, а не 0,0.
def rotate(oject2):
    mouse_x, mouse_y = pygame.mouse.get_pos()
    x, y = bmp_image.center
    rel_x, rel_y = mouse_x - x, mouse_y - y
    angle = (180 / math.pi) * -math.atan2(rel_y, rel_x)
    return angle
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы