О вреде чужих туториалов и подводных камнях изометрии (новость №1)

Добавлен , опубликован
Собственно, сабж
Представьте, что персонаж стреляет не в воздух, а в окружающих его тварей, и получите примерный прототип геймплея создаваемой игры. Разве что в дальнейшем стрельба будет прерываться различными дополнительными действиями, типа перезарядки, установки мин и т.д.. Думал о добавлении переката-уворота, как в Shadowgrounds, но мысль "а кому оно надо" победила.
HUD, к слову, несмотря на то, что состоит только из курсора, на флэше, что позволит в будущем добавить фишки типа свечения курсора (он ведь черный, и в темном пространстве его трудно заметить).

Лирически-техническое отступление
Во время создания скрипта (ну как скрипта, в этом, казалось бы, простом процессе, задействовано 5 скриптов) возникла одна большая проблема. Дело в том, что для поворота персонажа к курсору используется преобразование положения курсора на экране в положение курсора в мире. И все бы прекрасно, вот только по логике движка, в игровом мире курсор лежит на земле. Персонаж повернут к курсору, но, если смотреть прямо сбоку, стреляет он выше него. В итоге, получалось неслабое отклонение линии огня от реального положения курсора. Чтобы вы поняли, о чем я, см. картинку ниже.
Выходит, что в идеале, пули должны лететь вдоль синей линии, но они летят вдоль зеленой. В итоге, не заметить этого можно только при угле камеры 90 градусов. Чем меньше угол, тем больше отклонение.
А решение... Решение оказалось то ли невероятно простым, то ли абсолютно невнятным. Факт в том, что я до сих пор не понимаю, каким образом исправил ситуацию. Дело в том, что туториал, по которому я делал обнаружение позиции курсора в игровом мире, был ориентирован то ли на РПГ игру, то ли на тактическую игру, то ли на стратегию, и там специально была добавлена одна функция для того, чтобы позиция получалась именно на земле. В итоге, доведение управления до условного идеала заключалось в вырезании нескольких строчек кода.
Ну и второе, связанное с поворотом камеры. Как вы видите, камеру в игре можно вращать курсором. И с этим появился занятный баг - при каждом запуске игры камера сразу вращалась против часовой стрелки до тех пор, пока игрок не пошевелит мышкой. Дело в том, что интерфейс вначале вообще пустой, а курсор уже прикрепляется к нему. Само собой, новый компонент появляется с координатами (0;0). А поскольку обновление курсора работает по принципу "поменялось положение реальной мыши - двигаем курсор в игре туда же", то, пока мышь недвижима, курсор будет оставаться на месте, при чем, месте сильно отличимом от того, где он должен быть. Решилось установкой изначального положения курсора.

Пока наш персонаж стреляет без дела, но уже ведется работа над противниками. Даже так - код противников фактически готов, просто ведется дебаг, а дебаг, знаете ли, может надолго затянуться...
`
ОЖИДАНИЕ РЕКЛАМЫ...