2013-09-23 2 views
1

Итак, я работаю над крошечной маленькой 2-й версией voxxel в Pygame, и я хочу, чтобы блоки, на которые вы помещались, были подвержены гравитации, но для этого. Мне нужна сущность, чтобы иметь возможность столкнуться «с самим собой», (как и в другой). Вот код столкновения:Pygame: Проверьте, сталкивается ли сущность с другим?

for block in blocklist: 
    if block.rect.colliderect(block.rect): 
     exit() 

выхода() только для проверки, когда событие возвращает положительным, но, к сожалению, каждый раз, когда я создаю один блок ... он обнаруживает столкновение с самими собой и выходами.

Что я могу сделать, чтобы обойти это?

Спасибо! -Sam

+1

Вы тестирование, чтобы увидеть, если объект сталкивается с самим собой - конечно, он возвращает истину. – Aesthete

+0

Ну, как я могу это сделать иначе ?? –

+0

Вы используете группы спрайтов? – ninMonkey

ответ

3

Ваш пример просто проверяет первый блок в вашем списке против себя - он всегда будет сталкиваться.

Вы хотите проверить каждый блок в списке, против любого другого блока в списке:

for block in blocklist: 
    if any(block.rect.colliderect(x.rect) for x in blocklist if x is not block): 
     exit() 
+0

Работал как шарм! Спасибо огромное! ^. ^ –

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