Показано с 1 по 5 из 5

Тема: Как сделать инструмент "Тень" поверх всего

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #3
    Познающий Аватар для Deme
    Информация о пользователе
    Регистрация
    16.05.2014
    Сообщений
    317
    Записей в дневнике
    16
    Репутация: 4 Добавить или отнять репутацию

    По умолчанию

    Это сложно. Если я ничего не путаю, за отображение карты отвечает класс Tilemap, который является встроенным и не подлежит редактированию, и потому простого способа поменять поведение тени нет.

    Видимо, нужно заменить это поведение своим кодом:
    • написать код, который читает тень из $game_map.data и отображает её поверх других клеток,
    • а первоначальный код отображения тени отключить (путём установки всей тени в 0, или ещё как-нибудь).


    Сама тень хранится в первых четырёх байтах четвёртого слоя $game_map.data[x, y, 3] (биты по порядку дают ЛВ ПВ ЛН ПН, где Л — левый, П — правый, В — верхний, Н — нижний углы клеток соответственно), так что в собственном скрипте это наверняка возможно. Т.е. 1 = тень в левом верхнем полуквадрате, 2 = тень в правом верхнем полуквадрате, 4 — в левом нижнем, 8 — в правом нижнем. Соответственно, тень слева закодируется как 1+4=5. (Учитывайте, что другие биты в $game_map.data[x, y, 3] используются для записи регионов, так что нужно читать именно нужные биты побитовые операторы в Руби: a & 1 будет равно 1, если левая верхняя полуклетка содержит тень, и 0, если она не содержит тени.)

    Возможные подводные камни:
    • Нужно знать Руби, чтобы это сделать.
    • Скорость. Класс Tilemap сделали встроенным, чтобы карта рисовалась быстрее. Если вы заменяете часть его функциональность своим кодом для рисования тени, Ваша игра будет работать медленнее.


    N.B. Я не работаю с VX Ace и пост выше написан по результатам краткого подсматривания в код его скриптов. Возможно, существует более простой вариант, о котором я не знаю.
    Последний раз редактировалось Deme; 29.05.2017 в 12:53.
    «quī legis ista, tuam reprehendō, mea laudās // omnia, stultitiam; / nihil, invidiam» (Jōhannis Audoenī)
    'Ты, кто читает это: я порицаю, если ты хвалишь у меня // всё, твою глупость; / если ничего — твою злобу.' (Джон Оуэн)

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Как сделать инструмент "Тень" поверх всего