Всем привет! Все вы знаете, что стандартная невидимость в старкрафте 2 имеет некую голографическую основу (юнит переливается на фоне). Я захотел сделать действительно полную невидимость. Посмотрел в актёре на два замечательных поля, которые отвечают за прозрачность юнита (картинка ниже). Вот только теперь не знаю, как менять актёров на единице. Сделал по-простому два триггера с нажатиями на кнопки. Одна кнопка прикрепляет актёр с полупрозрачностью 0, а вторая возвращает старый актёр. Только вот актёры нагромождаются один на другой. Пробовал удалить актёр перед добавлением, но не нашёл такой триггер. Триггер kill actor scope не помогает.

Принятый ответ

Set Opacity в событиях актера управляет его прозрачностью динамически. Беда в том, что нельзя просто взять и скрыть актера полностью - его нужно скрывать только для тех, кто его не должен видеть, иначе владелец юнита тоже перестанет его видеть. Кроме того, прозрачный актер по прежнему остается выделяемым и атакуемым (не критично если совмещать со стандартной системой невидимости).
И ты, кажется, не совсем понял что я написал в последнем сообщении.
Модель пустышка не поможет - пустышка просто выключит все изменения отрисовки при невидимости, юнит станет всегда видимым, но без возможности атаковать его когда он должен быть невидим - нужна не пустышка, а модель аналогичная стандартной модели невидимости, но с такими анимациями материала чтобы в состоянии невидимости был полностью прозрачный материал. Технически, такую модель должно быть не сложно реализовать, да и на специализированных сайтах вполне может быть готовая модель для этих целей - ты наверняка не первый задался вопросом полной невидимости.
А еще стоит посмотреть что творится в героях шторма - там возможно есть полная невидимость для героев - а значит и готовая модель невидимости должна существовать, движок то один и тот же.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
2
24
5 лет назад
2
А что мешает отдавать актеру команду стать прозрачным вместо чехарды с несколькими актерами?

Более того, подозреваю что вполне реально откорректировать стандартное поведение и не извращаться с костылями.
0
11
5 лет назад
0
Через дату или триггеры? В триггерах не нашёл команду сделать юнита прозрачным.
0
24
5 лет назад
0
yellyex, через дату или через прямые актерские команды отправляемые из триггеров. Актеров вобще лучше триггерами не трогать без крайней необходимости.
0
11
5 лет назад
0
Я в дате не знаю, как обращаться к актёрам, кроме как через агент самого юнита. Не разбирался во внутренностях. А что за прямые актёрские команды в триггерах? Send Actor Messages?
0
24
5 лет назад
Отредактирован prog
0

Но я бы смотрел скорее в сторону редактирования стандартного поведения - насколько я помню, там есть отдельный набор инструкций определяющих что делать актеру при невидимости и других особых состояниях.
0
11
5 лет назад
0
Ты имеешь ввиду валидаторы? Мне бы строчку найти изменяющую прозрачность юнита хоть как. Либо в триггерах, либо в дате.
0
24
5 лет назад
Отредактирован prog
0
Лучше всего такие вещи делать через события актеров/агентов в дате. А конкретно в случае невидимости, насколько я помню, существует пресет содержащий описание событий определяющих поведение актера под невидимостью и этот пресет по умолчанию выдан всем актерам юнитов.

Все визуальные изменения происходящие с актером, а также большая часть его жизненного цикла описаны через события актера внутри актера - именно актер реагирует на события вызываемые, например, способностями, а не наоборот - способности и эффекты не говорят актеру что делать, только генерируют соответствующие события.
0
11
5 лет назад
0
Ага, кажется понял. Буду копать в агентах. В агентах указано поведение юнита под невидимостью, левитацией, закопкой и т.д. Как они связаны с тем, что юнит должен уйти в невидимость. Как говорил о прозрачности юнита, а дефолтная способность невидимость мне не нужна из-за её лёгкой голографии (невидимого юнита видно, как он переливается на фоне поверхности). А вот прозрачный (Transparating) юнит, то что мне нужно. Но всё равно спасибо.
0
24
5 лет назад
0
yellyex, я уверен, что там-же где-то можно и заменить "голографию" на полную невидимость.
0
11
5 лет назад
0
Я пробовал менять модель на пустую, но не получается. Выдается сфера. А вот поля с полупрозрачностью не просто так добавлены в агент юнита. Там и время есть и степень прозрачности. Видимо как-то к ним можно обращаться.
0
24
5 лет назад
Отредактирован prog
0
yellyex,
В актере SYSTEM_ActorConfig можно изменить модель, которая отвечает за рендер невидимости всех юнитов. Если заменить эту модель, например, пустой моделью "Invisible", то юнит под эффектом стандартной невидимости перестает быть выделяемым, как и положено, но не пропадает (совсем не то что тебе нужно, но отлично иллюстрирует возможность изменить поведение стандартной невидимости). Идеальным решением твоей задачи было бы найти такую модель на замену, которая переставала бы отрисовывать юнита полностью вместо искажений и просто заменить этой моделью стандартную. Насколько я могу судить, там просто анимируется материал в модели "невидимости" и потом этот материал достается и применяется к модели юнита.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.