В настоящее время я работаю над игрой на Pygame, Python 3, и одной из существенных частей игры является столкновение Rect в ситуации с пулей-мишенью.Столкновение Colorkey между Rect в Pygame, Python 3
Это довольно легко достичь с помощью функции colliderect
, но необходимо, чтобы пиксели были того же цвета, что и colorkey, чтобы не считаться.
Например, если один из спрайтов (символ) выполнен в виде большого равностороннего треугольника с горизонтальной базой, а пуля исходит из верхнего левого угла, colliderect
обнаруживает столкновение сразу, хотя пиксели в верхнем левом углу спрайта игрока прозрачны.
Мне нужно сделать функцию, которая будет обнаруживать столкновение только тогда, когда пуля достигнет пикселей различного цвета, чем colorkey. Это достаточно легко, если пуля только один пиксель:
if player.get_at((bullet[0] - player.left, bullet[1] - player.top)) != player.get_colorkey():
Я попытался итерация выше заявление для каждого пикселя в пуле, но, конечно же, что вызвало огромный лаг. Есть ли другой, более эффективный способ?
Спасибо заранее!