Суббота, 23 Ноября 2024, 12:08

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Обрезать спрайт с помощью другого спрайта?
FinalQДата: Четверг, 03 Марта 2016, 15:32 | Сообщение # 1
был не раз
Сейчас нет на сайте
Есть общее затемнение через сурфейс, есть спрайт обзора. Как можно сделать то же самое что показано на картинке? Чтоб за спрайтом стены оставалась темнота.

YellowAfterlifeДата: Пятница, 04 Марта 2016, 06:23 | Сообщение # 2
Сейчас нет на сайте
Находятся "самая левая" и "самая правая" точки, если смотреть на плоскость с точки начала света.
Для прямоугольных стен это делается вот таким странным куском кода:

Потом из поверхности с нарисованным в нее светом вырезается (рисуется с draw_set_blend_mode(bm_subtract)) трапеция, у которой одна сторона - эти точки, а другая - пропорционально отдаленный отрезок.
Код
var adx = ax - lx, ady = ay - ly;
var adl = sqrt(adx * adx + ady * ady);
var bdx = bx - lx, bdy = by - ly;
var bdl = sqrt(bdx * bdx + bdy * bdy);
var fl = 1000; // расстояние отдаления, должно быть больше максимального радиуса источника света
var afx = ax + adx / adl * fl;
var afy = ay + ady / adl * fl;
var bfx = bx + bdx / bdl * fl;
var bfy = by + bdy / bdl * fl;

afx, afy, bfx, bfy - вторая пара координат трапеции.

Результат:

Наспех написанная демка на JS




Сообщение отредактировал YellowAfterlife - Пятница, 04 Марта 2016, 06:44
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг