2016-02-09 5 views
0

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

pygame.sprite.collide_rect() предполагается проверить столкновение между 2 квадратом, интерпретируются как квадрат http://www.pygame.org/docs/ref/sprite.html#pygame.sprite.collide_rect

pygame.sprite.collide_circle() предполагается для проверки столкновения между 2 квадратами, но интерпретируется как круг http://www.pygame.org/docs/ref/sprite.html#pygame.sprite.collide_circle

Итак, я хочу, чтобы смесь с pygame.sprite.collide_rect() и pygame.sprite.collide_circle(). Является ли это возможным ?

+0

Имеют ли эти спрайты подходящие формы? – StephenTG

+0

, чтобы сохранить силу компьютера, я решил не использовать маску, это хорошая идея? – n0tis

+0

Как примечание, даже если это круг, всегда есть ограничивающий прямоугольник (прямоугольник), который вы проверяете первым, и если этот столкновение проверяется, получится true, проверьте прямоугольник и круг – Fredrik

ответ

0

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

if circle_x < rect_x + circle_width and circle_x + rect_width > rect_x and circle_y < rect_y + circle_height and rect_height + circle_y > rect_y: 
    #put whatever code you need here 

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

+0

Спасибо! если бы у меня было это 6 месяцев назад, это могло бы сэкономить много времени – n0tis

+0

Нет проблем, извините, что я не мог бы ответить на это раньше, я сделал свою учетную запись несколько недель назад. –

Смежные вопросы