PyGame: почему столкновение не работает хорошо? - PullRequest
0 голосов
/ 08 июня 2018

В большинстве случаев обнаруживает столкновение, но иногда - нет.Вот проверка столкновения:

def collide_check(this, object_1):
    bullet_rect = this.image.get_rect().move(this.bullet_x, this.bullet_y)
    object_1_rect = object_1.image.get_rect().move(object_1.ice_x, object_1.ice_y)
    if bullet_rect.colliderect(object_1_rect):
        #consequences of collision 

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Похоже на типичную проблему «Пули через бумагу».

Поскольку .move () не выполняет подшаг, вы просто не перекрываете другой прямоугольник, и поэтому не выполняете условие столкновения.

Проще говоря: вы «стираете» исходный прямоугольник и рисуете его заново в новой позиции.То же самое для другого прямоугольника.Они не перекрываются, потому что движение было слишком велико, поэтому столкновения не обнаружено.

0 голосов
/ 08 июня 2018

Если вы звоните collide_check() несколько раз на один и тот же объект, возможно, я нашел причину вашей проблемы.

По неизвестным причинам .colliderect() не обнаружит коллизии, если он вызываетсяна объекте, у которого уже были обнаружены столкновения.

Для получения дополнительной информации см. этот аналогичный вопрос.

...