Chaosborn

Заготовка под рогалик на webgl-движке PlayCanvas.

Chaosborn
1717

Круто, а расскажи как ты сделал систему эффектов? Я сейчас все строю на диспетчере событий даже для эффектов которые меняют атрибуты.

Ответить

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

Ответить