Pygame. Создание коллизии

Делаю небольшую игру с применением рей кастинга, основной задумкой являетя случайно сгенерированная карта (лабиринт). Столкнулся с проблемой создания коллизии игрока и его "взгляда" со стенами лабиринта (яркая зеленая точка - игрок, луч от него - его взгляд). Каждая отдельная стенка у каждой клетки это объект типа Rect, сохраненный в массив, если отрисовать все эти объекты получится лабиринт с красными стенами, как на картинке. Как я могу реализовать столкновение игрока со стенами? Пытался использовать методы union предусмотренныые в Pygame, но, я полагаю, из-за кол-ва и "рандомности" фигур массива он соединяет их просто в огромный красный квадрат. Также пытался реализовать проверку на столкновение с каждой из фигур массива, но тогда на моменте создания функции рей каста получается цикл в цикле в цикле, чего хотелось бы избежать, ведь эта функция будет вызываться по несколько раз в секунду.

import pygame
from MazeGenerator import grid_cells, TILE

collision_grid = []
for cell in grid_cells:
    x, y = cell.x * TILE, cell.y * TILE
    if cell.walls['top']:
        collision_grid.append(pygame.Rect(x, y, TILE, 2))
    if cell.walls['right']:
        collision_grid.append(pygame.Rect(x + TILE, y + 2, 2, TILE))
    if cell.walls['bottom']:
        collision_grid.append(pygame.Rect(x + 2, y + TILE, TILE, 2))
    if cell.walls['left']:
        collision_grid.append(pygame.Rect(x, y, 2, TILE))

введите сюда описание изображения


Ответы (0 шт):