Перейти к основному содержанию

Работа с копиями


Работа с копиями

Автоматически переведённая страница

К сожалению, на полный ручной перевод у нас не хватает ресурсов.
Если вы увидели ошибку — отправьте пул-риквест с исправлениями (ссылка для редактирования в конце страницы).

Часто при разработке логики игры вам нужно будет найти и изменить копию события другой копии. Catnip предоставляет несколько способов для этого.

Изменение групп копий

Чтобы повлиять на все копии конкретной шаблон-страницы, вы можете использовать блок под названием "С всеми копиями шаблона". Внутри этого блока любые команды, которые ранее влияли на копию вашего события, теперь будут влиять на копии выбранного шаблона.

Аналогичный блок существует для влияния на все копии в текущей комнате: "Для каждой копии".

Примечание

Свойства также читают и записывают значения в манипулируемые копии. Если вы хотите передать данные из основной копии в те, на которые вы влияете, используйте переменные.

Изменение конкретных копий

Чтобы изменить конкретную копию, можно использовать несколько блоков: "с копией", "считать свойство X" и "задать свойство X". Но сначала вам нужна ссылка на копию, которую вы хотите изменить. Ссылки являются обычными переменными и свойствами, которые указывают на сложные структуры, и копии являются одним из примеров таких структур. Ссылки отличаются от строковых, числовых и логических значений: когда вы копируете значение из одной строковой переменной в другую, изменение одной переменной не влияет на другую. При работе со ссылками ничего не дублируется, и вы по-прежнему работаете с одним объектом, даже если у вас несколько ссылок на него.

Получение копии конкретной шаблона

В вычисляемом блоке "templates list" Catnip есть функция, которая возвращает массив всех копий заданного вами шаблона. С помощью блоков из категории Массивы вы можете получить ссылку на любую копию в этом массиве. Это может быть использовано для получения копии вашего героя или списка всех мобов в комнате. Вы можете извлечь значения этого массива с помощью блоков из категории Массивы.

Обратите внимание, что получение элемента из этого массива может ничего не вернуть, если в комнате нет копий заданного шаблона или вы выбираете элемент по индексу, который превышает размер массива. Из-за этого вам всегда нужно добавлять условия, которые проверяют, является ли полученное значение действительной копией. Также помните, что индексация массивов начинается с 0, а не с 1.

Пример: Найти героя и двигаться к нему

Изменение копий, созданных программно

При создании копии вы можете сохранить ссылку на нее в переменную с помощью правой ячейки "сохранить в X". Классический случай использования — создание снаряда и настройка его параметров.

Вы также можете изменить свойства созданных копий непосредственно в блоке "Копировать шаблон" с помощью панели "Дополнительно":

Хранение ссылки полезно в том случае, если вам нужно изменить копию через некоторое время. Например, в аркадной игре-стрелялке с космическими кораблями вам может понадобиться уничтожить все летающие турели, которые следуют за вашим персонажем:

Влияние затронутых копий при столкновениях

События столкновения предоставляют специальную переменную события (вставьте блок переменной здесь), которую можно объединить с блоком "С копией". Например, это может быть написано в событии шаблона проекции, когда она сталкивается с врагом:

Что дальше?

Если вы уже читали другие страницы в категории "Обучение Catnip", ваш следующий шаг - завершить руководства! Они покажут, как применить полученные знания на практике и как работать с движком. Попробуйте эти: