Это сложно. Если я ничего не путаю, за отображение карты отвечает класс 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 и пост выше написан по результатам краткого подсматривания в код его скриптов. Возможно, существует более простой вариант, о котором я не знаю.
Социальные закладки