Как определить, что спрайт столкнулся с цветом в pygame - PullRequest
0 голосов
/ 10 июля 2020

Я хочу определить, что спрайт обнаружил цвет в pygame, и какую функцию мне следует использовать для достижения этой функции.

1 Ответ

1 голос
/ 10 июля 2020

Хотя можно получить цвет в любой точке поверхности, которую вы хотите проверить, используя get_at() (docs здесь ). Вам нужно будет найти новую область, которую покрыл ваш спрайт, но которую он не покрыл в прошлый раз, и проверить каждый пиксель в ней, а если другие объекты перемещаются, вам нужно будет проверить, перекрывается ли ваш спрайт с какой-либо из этих областей и проверить который. Или вы можете решить, что это слишком сложно, и просто просмотреть каждый пиксель под вашим спрайтом (еще не нарисовав спрайт) и проверить этот цвет.

Это возможно, но, скорее всего, не будет очень быстро.

Альтернативой является то, что если вы знаете, где находятся эти цвета, вы можете пометить эти области, используя прямоугольники, круги, спрайты или маски (см. здесь и здесь ), которые вы можете проверить против. Обычно это намного быстрее. Их не нужно рисовать, поэтому они будут невидимы. Они будут использоваться только для отметки областей для проверки столкновений.

Если вы не знаете точно, где находятся цвета фона или других изображений, вы можете создавать маски на основе цветов в них, используя pygame.mask.from_surface() или pygame.mask.from_threshold() (документы здесь и здесь ).

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