Система импульсов

» опубликован
» Способ реализации: cJass
» Тип: Наработка
» Версия Warcraft: 1.26a

Введение

В некоторых случаях, требующих программного перемещения юнита, необходимо выделить эту возможность в отдельный логический блок. Затем, чтобы не описывать для каждого случая одни и те же действия.

Описание

Основная возможность

Добавить импульс в список обработки:
SIpls_add(o, dx, dy, t, ev)
o - объект/структура обработки;
dx, dy - смещения по осям;
t - длительность импульса;
ev - событие остановки импульса (необязательный параметр).

Дополнительные возможности

  • Наложение множества импульсов как на одного, так и на нескольких юнитов;
  • Возможность преждевременно остановить импульс извне наработки, определив метод OIpls_notaddXY(). Например, при столкновении с препятствием;
  • Задать событие, которое сработает при удалении импульса из списка;
  • Изменить время периодической обработки очереди.
Impls.w3x
Без возможности задавать событие.
ImplsEv.w3x
С возможностью задавать событие.
Включены в наработку по умолчанию.

Установка

Требования

  1. Описать класс/структуру для передачи первым параметром.
  2. Определить реализацию метода OIpls_notaddXY(o, dx, dy) для перемещения юнита.
PS Оба пункта уже реализованы в карте, вы можете взять готовое или сделать по примеру.
» список изменений:
  • добавлено Описание, примеры использования, требования;
  • добавлено Введение, возможность задавать события, обновлены примеры.
Скопировать папки ProtoClass, IplseEx, Iplse к себе в карту с учетом требований.
Скачать:
Impls.w3x
ImplsEv.w3x


Просмотров: 209

Bergi_Bear #1 - 4 недели назад 1
На первой гифке, лучница слишком глубоко в декор улетает
и добавь хотя бы часть кода на сайт, самый основной
» вот так
тут код
И как себя поведёт игра при срабатывании 2х импульсов одновременно? (противоположные и одинаковые)
и паузить юнита при канале не хорошо (когда пропадают нопки с панели), надеюсь, ты только для тестовой карты так сделал
Vlod #2 - 4 недели назад (отредактировано ) 2
Bergi_Bear, примеры сделал, чтобы показать область применения наработки.
И как себя поведёт игра при срабатывании 2х импульсов одновременно? (противоположные и одинаковые)
Если 2 импульса одинаковые по величине, но противоположные по вектору, то юнит будет стоять на месте. Если направления совпадают, то увеличится скорость движения.
лучница слишком глубоко в декор улетает
Система коллизий между объектами не относится к этой реализации (единственный абстрактный метод OIplse_notaddXY()) Для примера была взята идея перемещения пустого предмета с погрешностью в 10, поправлю при обновлении.