Под этим понимается прозрачность спрайта, функция будет менять прозрачность.
Изначально значение прозрачности всех объектов установлено равным 1, это значит что объекты абсолютно непрозрачны. Вы можете менять данное значение от 0 (полная прозрачность, невидимость) до 1 (непрозрачный).
Кроме того объекты могут быть прозрачными на уровне спрайта, а так-же прозрачным может быть фон спрайта.
Вот несколько примеров которые помогут вам разобраться:
Спрайт с прозрачным фоном
Это бывает удобно когда мы делаем маску коллизии (соприкосновения) и для того, чтобы фон такого спрайта не наезжал на другие объекты.
Сейчас почти все спрайты для игр делаются с прозрачным фоном.
Прозрачный спрайт с прозрачным фоном
Тут мы можем добавить спрайту прозрачность с помощью функции opacity (помутнение):
Вот эта функция в редакторе спарйтов
Если там стоит значение 150 и если мы хотим сделать непрозрачный спрайт наполовину прозрачным, то выкручиваем её до 75, в 2 раза.
Однако менять прозрачность самих спарайтов не обязательно, достаточно в самой игре менять их прозрачность с помощью функции:
image_alpha
Допустим в момент создания дерева (create event) мы добавляем код с прозрачностью:
Вот так делается прозрачность в Game Maker Studio, всё довольно просто
На карте до запуска игры ваши деревья будут непрозрачными, но как только игра начнётся, они сразу получат прозрачность 50%. Примерно вот так:
Обратите внимание на красную зону, я её увеличу
Мазда рейсер, зум, зум
Тут станет понятно зачем может быть нужна прозрачность в гейм мейкер студио, почти всегда это чисто визуальный момент. Например тут можно видеть как герой прячется за деревьями, при этом понятно что он там есть и что дерево над ним.
Иногда в играх с изометрией стены или подвалы / этажи делаются прозрачными, возьмём Fallout tactics в качестве примера:
Всё таки Тактикс я считаю недооценённой игрой, она не так плоха...
Выделил красным область применения прозрачности. Так сделано примерно так что при касании спрайта героя с объектом, спрайт объекта делается прозрачным.
Кроме того прозрачностью можно отменить что объект скрывается.
Вернёмся к нашему примеру и деревьям.
Не забудьте прописать глубину (depth) дереву ниже чем у героя, чтобы оно было над ним. Например если глубина героя 0, то у дерева они должна быть -1, чтобы дерево было над.
С помощью прозрачности удобно делать тени, воду, стекло, деревья и некоторые эффекты (хотя лучше не надо), такие как кровь.
Имейте в виду что функция прозрачности требует много ресурсов процессора для обработки таких спрайтов, следовательно не злоупотребляйте ей. Если у вас нет нужды делать что-то прозрачным, не делайте.
Новички иногда делают многие объекты с прозрачностью 80-90% (0.8 - 0.9) просто так-как они считают что игра так лучше выглядит. Не стоит так делать для множества объектов, это и замедлит игру, и на самом деле в этом просто не нужды, да и это не реалистично.
В последних версиях Game Maker Studio (и в GMS2) фон у всех спрайтов автоматически делается прозрачным, раньше фон был белым.
Если у вас есть картинка с белым фоном (или любым другим), но вы хотите его убрать в графическом редакторе гейм мейкер, то это делается с помощью функции "erase a color" (убрать цвет), я пользуюсь этой функций очень часто, в том числе и для своих рисунков, а так-же работая практически с какой угодно графикой.
Вот так убирается зелёный фон
Если цвет не убирается, меняйте либо цвет, подбирая под цвет фона, либо допустимое отклонение (tolerance).
Кстати, вы часто замечали спрайты вот с таким зелёным фоном?
Это так сохраняются некоторые спрайты с прозрачным фоном, вам просто нужно будет потом его убрать вот таким вот образом.
С помощью прозрачности можно делать и тень, хотя это не лучший способ.
Чтобы сделать тень в Game Maker вы берёте ваш спрайт, затем делайте его абсолютно чёрным. Меняйте интенсивность (insensitivity) до 0:
Вот так у вас получается чёрный силуэт
Далее меняете прозрачность изменяя opacity (помутнение), как я и писал выше.
Вот такая тень в гейм мейкер
Ну и накладывайте на всё это дело ваш основной спрайт:
Получается примерно что-то такое, фон уже потом добавил, он на спрайте не нужен.
С помощью этой функции можно делать как-бы растворение элементов и объектов, а так-же появление их из ниоткуда. Выглядит прикольно, но жрёт довольно много ресурсов да и это кривоватый метод.
Посмотрите это моё короткое видео про элементы меню:
Да и вообще подписывайтесь на мой ютуб канал про создание игр, если не подписались.
Посмотрите как тут из темноты появляются элементы меню (кнопки). Сделано это с помощью как раз прозрачности. Просто изначально пишем кнопкам (в create) прозрачность равную нулю (image_alpha = 0), а затем в шаге (step) пишем что-то вроде:
if image_alpha<1 then image_alpha+=0.05;
Если прозрачность меньше 1 (полностью непрозрачный) то повышает раз в тик прозрачность на какое-то значение (0.05 например, 5%). Если у нас 30 тиков в секунду (fps = 30, скорость комнаты), то примерно через пол секунды у нас все кнопки с нуля станут непрозрачными.
Так-же можно делать с трупами, чтобы они исчезали (испарялись как-бы), только тогда вы снижаете прозрачность. Так-же можно делать отлетающие цифры урона и еще кучу всего.
Но не увлекайтесь с этим. Как я и сказал функции прозрачности затратные.
Последнее. Вот это точно не советую делать, но ради интереса.
Можно сделать дальность видимости героя с помощью прозрачности, при чём это довольно просто, но как это в плане нагрузки на компьютер я не знаю. Думаю что очень плохо.
Это может использоваться во всяких стелс играх либо в играх про подземелья типа рогаликов. Метод очень простой, выглядеть это будет примерно вот так:
Простенькую гифку даже сделал, всё ради вас
Как видите тут деревья и враги меняют прозрачность в зависимости от дистанции до героя.
Чтобы это сделать просто пропишите у них в step:
image_alpha=150/distance_to_object(o_hero);
Лучше не у каждого объекта кроме героя отдельно, а сделать один родительский объект (parent) под всё это дело и прописать у него.
150 в данном случае это зона видимости героя. Допустим если дерево стоит на дистанции 300, то по формуле будет 150/300 = 0.5, прозрачность 50%. То есть вы при таком раскладе будете видеть всегда, но дальние объекты будут более прозрачными, а объекты ближе чем 150 будут иметь прозрачность 1 (она не может быть больше чем 1).
А когда дистанция будет ровно 0 (впритык), то объекты вообще будут пропадать так-как по формуле итог будет равен нулю...
Если вы не хотите видеть что-то дальше чем Х вообще (прозрачность 0), можно так:
if distance_to_object(o_hero)<100 then image_alpha=1;
if distance_to_object(o_hero)>=150 then image_alpha=0;
Можно это и комбинировать с прошлой формулой...
Реально и сделать еще парочку промежуточных вариантов дальности видимости.
У этого метода есть и другие недостатки, например объекты где вы хотели иметь постоянную прозрачность допустим 50% (0.5) у вас будут тоже менять её в зависимости от дальности от героя, хотя можете у таких объектов сделать изначальную прозрачность спрайта другой.
Другие мои статьи про создание игр вы можете найти вот тут: Геймдев
Если какие-то вопросы пишите в комментах.