2D-освещение — сделать так, чтобы свет не проходил сквозь стену

У меня есть карта столкновений и несколько мест, которые я хочу использовать в качестве источников света. Источник света дает свет, который на самом деле имеет форму, в которой я могу видеть землю. Теперь это выглядит так:

enter image description here

Итак, свет проходит сквозь стены. Я хочу, чтобы это выглядело так:

enter image description here

(Я отметил столкновения со стенами темно-желтым цветом)

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

Моя первая идея заключалась в том, чтобы отбрасывать лучи от источника и проверять, когда они сталкиваются со стеной (я знаю, как это сделать), но тогда мне нужно было бы отбрасывать луч, например, каждые 0,001 градуса, поэтому слишком много времени для создания источников света. Следующее, что форма света не всегда круглая, иногда это может быть эллипс или полуэллипс, даже треугольник или часть круга. В общем, у меня есть битмап со светом, который ни с чем не сталкивается, и я хочу его немного вычесть, чтобы он выглядел как на втором изображении.

И последнее, я использую allegro 4.2.1, но все ранее упомянутые растровые изображения представляют собой двумерные массивы с 0 и 1.

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

6
задан noisy cat 22 May 2012 в 12:53
поделиться