В игре, которую я делаю, я пытаюсь заставить врагов в том же списке не сталкиваться друг с другом. Код, который я использовал, чтобы попытаться получить эту работу здесь:PyGame: Два спрайта в одном списке Collide
for m in self.meteors:
if pygame.sprite.collide_rect(m, m):
self.velX = 0
else:
self.velY = 0
Я не знаю, почему это не будет работать. Он спрашивает, столкнулись ли два метеора и останавливается ли там скорость X или скорость Y. Любая помощь будет оценена благодаря вам.
Вы уверены, что хотите передать 'm' в функцию столкновения дважды? Должен ли кто-нибудь из них быть «сам»? – mhlester
то, что он делает, проверяет, находится ли тот же самый метеор в одном и том же пространстве, и если да, то он устанавливает значение velX равным 0. Это никогда не достигнет velY, так как тот же объект столкнется с самим собой. Не могли бы вы уточнить, что вы пытаетесь сделать? –
Я пытаюсь остановить метеоры, сталкивающиеся друг с другом, но продолжая двигаться в другом направлении, поэтому, если он столкнулся с верхней/нижней частью метеора, он будет двигаться только в противоположном направлении или двигаться по скорости X. – GhostFrag1