Логика обнаружения столкновений на спрайте, не отображаемом на дисплее [дубликат]Python

Программы на Python
Ответить
Anonymous
 Логика обнаружения столкновений на спрайте, не отображаемом на дисплее [дубликат]

Сообщение Anonymous »

У меня есть поверхность в нижней части отображаемого окна. Спрайт (красная кнопка) переносится на эту поверхность, поэтому его x и y связаны с этой поверхностью, а не со всем экраном. Я хочу определять каждый раз, когда щелкают по этому спрайту, но если я это сделаю,

Код: Выделить всё

self.rect.collidepoint(mouse)
коллизия не работает должным образом, потому что mouse=pygame.mouse.get_pos() возвращает координаты мыши x,y во всем окне, напротив, self.pos связан с поверхностью.
Логическое решение состоит в том, чтобы найти «реальную» позицию спрайта, вычислив ее (я не нашел ни одного метода, который автоматически делает это) и проверив столкновение с помощью временного прямоугольника:

Код: Выделить всё

self.image.get_rect(topleft=(self.pos[0],self.pos[1]+spacing)).collidepoint(mouse)
где интервал — это положение синей поверхности по оси Y в окне.
Вопрос: есть ли более чистый/более простой способ сделать это? Или, может быть, есть способ автоматически найти «настоящее» положение прямоугольника?
Вот двойник моего окна:
Изображение

редактировать: для мода, который установил это сообщение как дубликат простого сообщения о столкновении мыши, пожалуйста, прочитайте вопрос, прежде чем делать это!

Подробнее здесь: https://stackoverflow.com/questions/798 ... on-display
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»