2014-12-24 3 views
0

Я использую pygame, чтобы сделать простую игру. У меня проблемы с круговыми столкновениями. Я получаю следующее сообщение об ошибке:
«AtributeError: объект„pygame.Rect“не имеет attrinute„прямоугольник“»столкновение с пигамом?

Вот конкретный код, который я имею проблемы с ниже:

if pygame.sprite.collide_circle(hero_circle, enemy_circle): 
      gameover() 

Спасибо заранее!

+0

я не знаю «классов», но я не думаю, Мне нужно это –

+0

хорошо, вы работаете с объектом. поэтому вы должны быть знакомы с классами. в любом случае вы могли бы показать нам код, где вы получите ошибку с pygame.Rect? –

+0

Классы имеют решающее значение для обнаружения столкновения –

ответ

0

Используйте pygame.mask, чтобы создать сетку конфликтов для ваших объектов и использовать сетку для обнаружения столкновений.

Более подробно:

  1. Создать файл изображения для обоих из ваших кругов и установить цвет Б.Г. к чему-то вы не будете использовать в другом месте.
  2. Установите этот цвет в «прозрачный» в редакторе изображений.
  3. Импортируйте изображения.
  4. Создайте для них сетку с pygame.mask и настройте ее, чтобы сделать прозрачные пиксели нерушимыми.
  5. Используйте созданную маску в качестве вашей сетки обнаружения столкновения.
  6. PROFIT

(Технически это просто делают обнаружение столкновения формованной области окружности на прямоугольнике, но кто заботится!)

1
pygame.draw.rect() 
draw a rectangle shape 
rect(Surface, color, Rect, width=0) -> Rect 

Рисует прямоугольную форму на поверхности. Данный Rect является областью прямоугольника. Аргумент width - это толщина, чтобы нарисовать внешний край. Если ширина равна нулю, прямоугольник будет заполнен.

Помните, что метод Surface.fill() работает так же, как и для рисования заполненных прямоугольников. Фактически Surface.fill() может быть аппаратно ускорен на некоторых платформах с программным и аппаратным режимами отображения.

0

Просто нравится, как GMK сказал, но если ваш используют круги вместо прямоугольников, вы должны использовать эту Pygame функцию:

pygame.draw.circle(surface, color, center_point, radius, width) 

Это рисует круг на вашей поверхности (которые идут бы в surface площадь). Очевидно, что цвет требует список номеров (любой RGB?). Ваш center_point определяет местоположение вашего круга, так как оно будет расположением центра вашего круга. Радиус будет нуждаться в числе, чтобы задать радиус круга (используя число, подобное 25, будет устанавливать ваш радиус с 25 пикселями/диаметром в 50 пикселей). раздел width необязателен, поскольку он устанавливает толщину периметра вашего круга (с 0 вообще не будет). Если вы не используете круги, вы должны изменить свой заголовок ... Но в любом случае, надеюсь, это поможет вам!