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))