Кадр задержки излучателей

Эта проблема тоже не связана с обратной совместимостью. Она уже присутствовала в версии для раннего доступа. Нам показалось, что про неё стоит рассказать. У излучателей есть кадр задержки, потому что когда вы копируете объект, ему нужен кадр с комплектом логики. Она отвечает за то, чтобы всё находилось в правильном состоянии.

Пример#

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

Когда вы излучаете объект, игра в буквальном смысле создаёт копию целевого объекта. Итак, теперь у вас появляется копия выключателя и вращающегося лезвия, но лезвие выключено (выключатель не активен).

Излучение объектов происходит в кадре до того, как код отправляет сигналы по проводам. Поэтому если бы мы показали излучённые объекты в кадре, в котором они были излучены, вы бы увидели неподвижное лезвие в одном кадре, а в следующем кадре, после того как по проводу пришёл сигнал от выключателя, лезвие начало бы вращаться. Чтобы избежать подобных проблем (а также более сложных, в которых участвуют несколько гаджетов, временных шкал и т.д.), мы не показываем объекты в том же кадре, в котором они были излучены. Для них не генерируется физика в этом кадре, они сами не выполняют логику (зона срабатывания/лучи и т.д.)

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

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

Wildfire: исправление кадра задержки излучателя.

Излучённые временные шкалы: Мы пока не можем показать это на примере творений, созданных пользователями, но мы придумали пример сами. Это проблема, вызванная кадром задержки. К тому же это самый удачный пример, который поможет вам представить поведение излучателя.

Излучённый гаджет (например «Портал НЕ»), находящийся в первом кадре временной шкалы, не сможет ничего активировать.

Кадр задержки излучателя на временной шкале.

Если вы знаете, что столкнётесь с этим, то самое простое решение — снять «Портал НЕ» с временной шкалы, и тогда он будет активировать любое событие логики, как только эта логика станет активной. Если вам нужно, чтобы этот триггер был сигналом, можно добавить оператор сигнала.

Руководство пользователя «Грёз» постоянно дополняется. Следите за обновлениями: мы будем периодически добавлять новые уроки и статьи.