Персонажу изначально доступен простой выстрел, не расходующий энергию, очень медленно движущийся и наносящий слабый урон вражеским существам. Если поднять и экипировать предмет, символизирующий оружие, то выстрелы будут лететь далеко, у них поменяется цвет и они сразу наносят летальный урон. При этом на выстрелы будет тратится энергия.
а почему такой выбор движка?
Как минимум - на браузерной платформе проект куда более доступен для публики. Нажал и попробовал, не надо ничего устанавливать.
Если же смотреть по webgl-движкам, то у этого есть выделенное пространство под проекты (то есть не нужно поднимать что-то в интернете дополнительно) и очень неплохой редактор.
А так - при желании я всегда могу перенести эту структуру в другие движки, тот же Godot или Unigine, если захочется чего-то более крупного и уйти от некоторых браузерных ограничений.
Побегал тупо на телефоне,да я читал что выше.
Ну так вот,а чего он так медленно и вязко передвигается?
Сколько вы времени на это все потратили?
По времени - примерно третья неделя пошла. Но, понятно, временами и не каждый день.
Перемещение не особо то и медленное, к тому же я не фанат всяких рывков и быстрой скорости передвижения в этом жанре (в первой Diablo персонажи чуть ли не пешком ходили). Тут больше психологии и особенностей восприятия происходящего в целом - текущая анимация бега чуть быстрее чем реальное движение, враги быстро двигаются, много пустующего пространства.
Круто, а расскажи как ты сделал систему эффектов? Я сейчас все строю на диспетчере событий даже для эффектов которые меняют атрибуты.
Смотря, что имеется в виду под эффектами. Взаимодействия с их последствиями?
На большинстве объектов есть скрипт "destructor", который сам по себе ничего не делает в цикле, но к его методу обращаются определённые "попавшие" в этот объект сторонние коллайдеры (выстрелы, игрок). У каждого destructor имеется идентификатор (ID), на основании которого он обрабатывает случившиеся столкновения (в том числе - реагировать на них вобще, или нет), а также может получать дополнительные свойства. Например, если desrtructor висит на существе, то у него появляется запас здоровья. Если на предмете, то координаты иконки этого предмета в текстурном атласе, для дальнейшей передачи в окно инвентаря персонажа и так далее.
Информация не через "столкновения" передаётся либо через то, что объект при инициализации получает ссылку на главный менеджер сцены (который делает большинство задач), в котором может впоследствии поменять/взять данные или как-то воспользоваться её методами (просто вызвать, вызвать с параметром, что-то посчитать). Либо, ещё один вариант - хранить некоторые переменные глобально и в нужном скрипте делать проверки на изменение этого значения (то есть некая самописная альтернатива системе сигналов-делегатов). Естественно, через сигналы и их слушателей тоже можно делать.
С таким скрином никто кроме меня и собомжей сюда не заглянет.