ssbbssc, так-же nazarpunk уже тебе подсказал, что время, которое ты рандомишь в событии, зарандомится в начале игры и будет одинаковое в течении всей игры. Если хочешь чтобы время было каждый раз разное - запускай задержку через таймер.
Событие - таймер А истек.
Действие - в конце запустить таймер А со временем (случайное число от 0.9 до 4)
ssbbssc, используй не офсет смещение, а полярное смещение, где указываешь радиус (расстояние) 1750 и рандомный угол. Иначе у тебя почти все мобы будут приходить с одной стороны. Да и в целом изначально делай спавн со смещением от точки героя по полярным координатам, и не придется перепроверять, а где та самая точка.
В целом этот функционал очень фоновый, и если система будет отставать из-за пауз в меню, думаю это не сильно повлияет на пользовательский опыт. Ну запуститься музыка не с 50 секунды а с 20 (30 сек в меню посидел). Сильно это на итоговый игровой опыт не повлияет. Главное каждый раз с нуля не будет запускаться - вот такое будет гораздо заметнее, чем продолжение не с той секунды.
rsfghd, тогда через системное время с периодиком на проверку разницы можно обойти эту проблему. Если делать немного грубую систему, не идеальную, но главное будет работать.
Технически это возможно, но придется запариться с системой.
Есть запуск музыки с указанной точки - но проблема в том, что нет проверки, на каком моменте мы стопаем музыку. Мб есть какие-то нативки в коде, но это уже надо копать.
Как вариант - запускать параллельно таймер, который будет отслеживать длительность звука, и который сам будет музыку перезапускать после окончания. И за счет этого таймера можно будет сохранять время остановки в переменную. А потом продолжать с точки, сохраненной прошлый раз в переменную.
Crick12,
тогда периодик твой выбор с сохраннением юнита, пока способка работает. То есть отдаешь приказ, запускается триггер с периодиком. Отдаешь другой приказ - отменив целевой, а значит выключаем триггер с периодиком. Так-же после срабатывания способки в периодике, он сам себя выключает.
В таком случае периодик будет работать только тогда, когда есть нужный приказ. Для контроля в периодике еще можешь проверять приказ, если отменили каким-то образом - выключаешь периодик.
Эээээх еще бы понять, что ты написал... Ты написал полу решение какой-то непонятной задачи без описания задачи. Если хочешь лучший ответ - опиши так, чтобы люди тебя смогли полностью понять, в чем у тебя проблема. В чем изначальная суть задачи, как ты сейчас реализовал (желательно со скрином тригегра/кода) и какая проблема у тебя возникла. Я на все 3 вопроса увидел только половину информации, либо плохо тебя понял.
Но из того что понял, ты в какой-то момент отдаешь приказ действия на цель, но действие произойдет через N секунд, когда юнит добежит, и еще ты можешь отдать такой-же приказ когда он войдет в область, где сделает это действие, и ты не хочешь, чтобы второй раз отдавался такой приказ при входе? Или ты хочешь отследить, когда он начнет делать то самое действие на цель?
Даже если не так понял, может несколько путей дадут тебе идею для решения:
Добавить юнита в события или условия для триггера. Типа юнит был атакован и вставляем условие "ЭТОТ юнит" == "атакующий юнит". То есть будет проверка на конкретного юнита, чтобы отследить начало его действия (события триггера может быть любое, смотря что тебе надо отследить, юз способки, вход в регион и тд, главно привязка к конкретному юниту).
Добавить юнита в группу или переменную, чтобы сохранить его. Далее через события нужного действия можешь проверять, является ли триггерный юнит из этой группы и дальше можешь его обрабатывать, и когда с ним закончишь, удалишь из группы или очистишь переменную.
Схожее с прошлым решением, когда добавляешь юнита в группу и периодиком всех в группе проверяешь, что юниты действуют как тебе надо, либо перебиваешь приказ на нужный.
А и да... А разве при входе в область не проще проверить на нужный приказ, чем проверять периодично (к примеру раз в секунду) у какой-то группы юнитов приказы?
EugeAl, O(n) в программировании обозначает сложность (или время) алгоритма, что в данном случае говорит о выполнении n операций для нахождения. К примеру плохим временм будет O(n*n) для таких поисков (это как цикл в цикле, только зачем так делать для поиска, это вопрос, но кто-то может сделать), или O(2*n). Идеал - это O(1), 1 операция для проверки без циклов.
Думаю тут мало кто увидит вопрос из знающих, шарящих в теме. Думаю такой вопрос стоит задать напрямую под ресурсом этой карты тут.
Там же в целом можно обсуждать прохождение и делиться своими впечатлениями.
» WarCraft 3 / Проигрывание разной музыки в разных локациях
» WarCraft 3 / Проигрывание разной музыки в разных локациях
» WarCraft 3 / Точка за пределами камеры
Событие - таймер А истек.
Действие - в конце запустить таймер А со временем (случайное число от 0.9 до 4)
Отредактирован konvan5
» WarCraft 3 / Точка за пределами камеры
» WarCraft 3 / Точка за пределами камеры
» WarCraft 3 / Проигрывание разной музыки в разных локациях
» WarCraft 3 / Проигрывание разной музыки в разных локациях
» WarCraft 3 / Проигрывание разной музыки в разных локациях
» WarCraft 3 / Проигрывание разной музыки в разных локациях
» WarCraft 3 / Проигрывание разной музыки в разных локациях
Есть запуск музыки с указанной точки - но проблема в том, что нет проверки, на каком моменте мы стопаем музыку. Мб есть какие-то нативки в коде, но это уже надо копать.
Как вариант - запускать параллельно таймер, который будет отслеживать длительность звука, и который сам будет музыку перезапускать после окончания. И за счет этого таймера можно будет сохранять время остановки в переменную. А потом продолжать с точки, сохраненной прошлый раз в переменную.
» WarCraft 3 / Стихийные мечи
» WarCraft 3 / Как правильно использовать boolexpr?
» WarCraft 3 / Как правильно использовать boolexpr?
Отредактирован konvan5
» WarCraft 3 / Проверка наличия приказа
тогда периодик твой выбор с сохраннением юнита, пока способка работает. То есть отдаешь приказ, запускается триггер с периодиком. Отдаешь другой приказ - отменив целевой, а значит выключаем триггер с периодиком. Так-же после срабатывания способки в периодике, он сам себя выключает.
В таком случае периодик будет работать только тогда, когда есть нужный приказ. Для контроля в периодике еще можешь проверять приказ, если отменили каким-то образом - выключаешь периодик.
Отредактирован konvan5
» WarCraft 3 / Проверка наличия приказа
Но из того что понял, ты в какой-то момент отдаешь приказ действия на цель, но действие произойдет через N секунд, когда юнит добежит, и еще ты можешь отдать такой-же приказ когда он войдет в область, где сделает это действие, и ты не хочешь, чтобы второй раз отдавался такой приказ при входе? Или ты хочешь отследить, когда он начнет делать то самое действие на цель?
Даже если не так понял, может несколько путей дадут тебе идею для решения:
Можно.
» WarCraft 3 / Шахматы варкрафт 3
Отредактирован konvan5
» WarCraft 3 / Как правильно использовать boolexpr?
Отредактирован konvan5
» WarCraft 3 / Шахматы варкрафт 3
Отредактирован konvan5
» WarCraft 3 / Шахматы варкрафт 3
К примеру тут
» WarCraft 3 / Как правильно использовать boolexpr?
» WarCraft 3 / Как правильно использовать boolexpr?
» WarCraft 3 / Как правильно использовать boolexpr?
Как те-же многомерные массивы и другие фичи программирования, которым уже больше 20-30 лет.
Отредактирован konvan5
» WarCraft 3 / Козырная пешка: проблемы с пирамидой по квесту "шаг во тьму"
Там же в целом можно обсуждать прохождение и делиться своими впечатлениями.
» WarCraft 3 / Козырная пешка: проблемы с пирамидой по квесту "шаг во тьму"