Как на копии обьекта выводить различные значения?

техническая поддержка по Construct 2

Сообщение Как на копии обьекта выводить различные значения?
» 29 окт 2020, 12:57

Облазил форум(но как я вижу достаточно плохо) и до сих пор не могу понять, как можно используя один обьект,допустим текст, задавать ему разные значения? Через приватную переменную?(Она как я понимаю в конструкте прикрепляется к обьектам) Я изменяю переменную у копии обьекта, она изменяется и на оригинале :cray: Может скинете статью(желательно на русском) или просто тут обьясните, как на копиях обьекта "текст" выводить разные значения? Только адекватные ответы, пожалуйста, новичок в этой сфере)
Аватара пользователя

Участник
Сообщений: 26
Я тут с 27 окт 2020
Репутация 0 [ ? ]

Сообщение Как на копии обьекта выводить различные значения?
» 29 окт 2020, 13:29

Самый банальный и наглядный пример, это в меню игры, когда расположены 3 текста. Ты планируешь сделать Старт, Настройки и Выход. Добавляешь тексту переменную текстовую, например "state" и вручную прописываешь значения трём текстам- "start", "setting", "exit". При старте уровня делаешь условие, если значение переменной "state" = "start" - то написать в тексте "Старт". Если "setting" - то написать "Настройки" и т.п.
Аналогично, когда кликаешь на Текст и хочешь произвести действия: вход в игру, открытие настроек, или выход из игры. Просто проверяешь переменную текста
Изображение Изображение Изображение
Аватара пользователя

Игродел
Сообщений: 2602
Я тут с 26 сен 2013
Откуда: Екб
Двиг: C2
Репутация 333 [ ? ]

Сообщение Как на копии обьекта выводить различные значения?
» 29 окт 2020, 13:37

never47, Изменять текст по значению личной переменной это хороший способ, тем что ты сразу можешь понять в событиях за что, текст отвечает. Можно конечно и другими способами отфильтровать (через UID, другие условия), но с текстом это нагляднее.

Как это сделать сказали выше, но от себя добавлю, что можно текстам также добавлять личную числовую переменную id, чтобы фильтровать даже те экземпляры, у которых одинаковое значение переменной type.
Исходники:
Библиотека исходников для Construct Classic - http://c2community.ru/forum/viewtopic.php?f=16&t=16843

Плагины:
Портирование плагины [C3Runtime] - http://c2community.ru/forum/viewtopic.php?f=200&t=17021
Поддельные плагины [C3Runtime] - http://c2community.ru/forum/viewtopic.php?f=200&t=16933
Аватара пользователя

Участник
Сообщений: 692
Я тут с 12 мар 2020
Откуда: GameSoul Inc.
Двиг: Construct,Unity
Лицензия: Business
Репутация 111 [ ? ]

Сообщение Как на копии обьекта выводить различные значения?
» 29 окт 2020, 17:18

спасибо, парни, +rep
Аватара пользователя

Участник
Сообщений: 26
Я тут с 27 окт 2020
Репутация 0 [ ? ]

Сообщение Как на копии обьекта выводить различные значения?
» 02 ноя 2020, 13:41

Привет! Дополню вопрос про переменную, можно ли указать в условии одну переменную, а выполнять действия над другой? Например, мы нажимаем на объект с переменной "а", но движется тот же самый объект, но с переменной "б"?
Изображение Изображение Изображение
Аватара пользователя

Участник
Сообщений: 112
Я тут с 05 дек 2019
Откуда: Воронеж
VK: dmitrygalias
Репутация 33 [ ? ]

Сообщение Как на копии обьекта выводить различные значения?
» 02 ноя 2020, 18:39

dmitryartist, если не сработает 3 условия в одном событии, то третье в подсобытие
1) Mouse - On click object - Sprite
2) Sprite - Var="a"
3) System - Pick by comparison - Sprite, Sprite.var="б"
Аватара пользователя

Модератор
Сообщений: 4691
Я тут с 18 сен 2015
Откуда: Екатеринбург
Двиг: С2/С3
Лицензия: Personal
Репутация 682 [ ? ]

Сообщение Как на копии обьекта выводить различные значения?
» 02 ноя 2020, 19:03

never47, тут главное понять саму суть, как работают события:

Условия, связанные с объектами фильтруют экземпляры (то есть копии одного объекта). Все действия, выполняемые в этом событии, а также в подсобытиях выполняются только по отношению к тем экземплярам, которые были отфильтрованы в условиях. Если в событии нет условий, связанных с объектом, то действия будут выполняться для всех экземпляров этого объекта.

dmitryartist, ещё можно добавить объект в семью. И дальше по отдельности фильтровать экземпляры объекта и экземпляры семьи.

Также можно использовать условие System > Pick all. Суть этого условия в том, что оно сбрасывает фильтр экземпляров объектов для текущего события и всех подсобытий.
Аватара пользователя

Редактор
Сообщений: 355
Я тут с 01 авг 2017
Репутация 95 [ ? ]

Сообщение Как на копии обьекта выводить различные значения?
» 03 ноя 2020, 23:45

ReviveR200, Ни так, ни так к сожалению не сработало.

ViGaCi, С семьёй не получилось. А вот Pick all прям то что надо, заработало, спасибо.
Вот пример, который получился:
var_test.c3p
(49.68 КБ) Скачиваний: 32

Интересно как логика у такого события работает. Получается мы выбрали копию спрайта, указав переменную, над которым будем совершать действие(нажимать), затем мы обнулили наш выбор, и опять указали уже другую копию спрайта, так же указав переменную. Но при этом движок запомнил и проверяет на совпадение с условием одну копию спрайта, а действие выполняет с другой. Круто)
Изображение Изображение Изображение
Аватара пользователя

Участник
Сообщений: 112
Я тут с 05 дек 2019
Откуда: Воронеж
VK: dmitrygalias
Репутация 33 [ ? ]

Сообщение Как на копии обьекта выводить различные значения?
» 04 ноя 2020, 09:41

dmitryartist, события выполняются последовательно. И отсеивание объектов также. Сначала "пикаются" только те, на которые кликнули (может быть несколько, если они один под другим). Затем среди этих отбираются только те, у которых совпадают переменные. Далее Pick all, который имеет приоритет по выбору объектов, и по этому берутся все объекты. И среди всех объектов берем тот, у которого совпадает переменная. При этом если на каком-то этапе получится 0 объектов, то условие не верно.
Не знаю, почему мой вариант не подошел. Сам один раз сидел над тестами по иерархии приоритета "пика", но уже не помню результат.
Аватара пользователя

Модератор
Сообщений: 4691
Я тут с 18 сен 2015
Откуда: Екатеринбург
Двиг: С2/С3
Лицензия: Personal
Репутация 682 [ ? ]

Сообщение Как на копии обьекта выводить различные значения?
» 04 ноя 2020, 12:46

dmitryartist, сделал исходник, в котором показано как при помощи семьи выбрать по отдельности два экземпляра одного объекта.



Как это работает:
На сцене находятся 10 экземпляров объекта Sprite (т.е. 10 копий одного объекта). Каждая копия имеет переменную с уникальным ID (от 0 до 9). Есть объект Line (линия). Есть две глобальных переменных, в которые нужно вписать ID двух спрайтов. При старте уровня между этими двумя спрайтами проводится линия.
000000002.png
000000001.png
Аватара пользователя

Редактор
Сообщений: 355
Я тут с 01 авг 2017
Репутация 95 [ ? ]



Вернуться в Вопрос-Ответ по Construct 2

Сейчас эту тему просматривают

Зарегистрированные пользователи: нет зарегистрированных пользователей

Наверх