Девлог №1
Прошлый пост вот здесь.
За 3 недели продвинулся не сильно. Да и времени на игру было не особо много.
Камера
Во-первых, добавил управление камерой на ЛКМ, вместо WSAD (говорят, так удобнее). Вот как это было:
1) Сначала получаю координаты курсора (_lastMousePosition) в момент зажатия ЛКМ и объявляю, что начал перемещение камеры (_dragging.Status).
2) Затем получаю смещение курсора (mouseDelta) и перезаписываю его координаты. Потом обнуляю Y-координату, так как камера должна перемещаться только в плоскости XZ, и нормализую векторы, чтобы скорость была одинакова во всех направлениях перемещения. В конце записываются координаты, куда надо переместиться и компенсируется скорость при изменении масштаба, чтобы скорость не зависела от текущего масштаба.
3) Когда камера оказалась в нужной точке, объявляю, что перемещение завершено путём отпускания ЛКМ.
Собственно результат
Индикация совпадения граней
Во-вторых, добавил индикацию совпадения граней плиток. Если грани совпадают, то подсвечивается (громко, правда, сказано) одним цветом, если не совпадают - другим. Для этого надо было немного доработать анатомию плитки.
Добавил небольшие триггеры рядом с каждым блоком и внутрь этих триггеров поместил объект, который, собственно, и будет излучать свет. Пришлось ещё настроить слои.
Сначала снял только взаимодействие с блоками внутри родителя Tile (слой New Tile и, да, у триггеров объекта Tile illumination - слой Default), но это не помогло и объекты свечения появлялись либо в случайных местах, либо срабатывала не та индикация. Оказалось, что триггеры как-то задевают плитки-подсказки (слой Empty Tiles), поэтому, чтобы триггер точно взаимодействовал только с ранее установленными плитками, снял галочку и на пересечении со слоем Empty Tiles.
Скрипт выглядит довольно просто:
При срабатывании триггера проверяю, что плитку видно на экране (_tileVisible.Status), и если не видно, скрываю все объекты свечения. Далее, проверяю теги и в зависимости от результата выдаю нужное свечение. Когда триггер перестаёт с чем-либо взаимодействовать, просто отключаю объект свечения.
Для большей убедительности объекты Tile illumination удаляются также и с объекта-дубликата. После установки текущей плитки, чтобы подсветка случайно не сработала, скрипт подсветки отключается.
И вот что из этого вышло:
Игра работает за счёт веры и святого духа, поэтому, если вам есть что сказать, можете оставить комментарий. Надеюсь, это не последняя часть девлога и игра когда-то увидит свет.
Спасибо, что дочитали до конца.