Всё о пике в Construct

другие уроки, мануалы, советы по Construct 2

Сообщение Всё о пике в Construct
» 23 фев 2018, 15:01

 Основы
Предисловие
Я написал этот урок, потому что меня не раз спрашивали насчёт этой темы, не понимая даже слова "пик", и эти люди были не совсем новичками. Думаю даже не все неплохо знающие констракт задумывались об этом. Сейчас я поясню, что я имею ввиду под словом "пик" и причём здесь констракт.

Что же такое "пик"?
Под "пиком" (от англ. Pick - выбирать, выбор) я имею ввиду то, какая именно из копий объекта имеется ввиду в том или ином событии. Пик встретится вам даже в самой простой игре, поэтому важно понимать, как он работает. Итак, перейдём к конкретному примеру.

Простенький пример
Итак, у нас есть вот такая "игра":
Pick1.PNG

Пуля летит во врага, ничего сложного, для неё мы написали в листе событий следующее:
Pick2.PNG

Буквально: когда пуля попадает во врага, и враг и пуля уничтожаются.
Результат очевиден: и пуля и враг уничтожатся. Идём дальше и усложняем нашу "игру":
Pick3.PNG

Теперь у нас 2 врага, и в первого пуля попадёт, а во второго нет. Результат человеку интуитивно понятен: один враг будет убит, а второй - нет. Но почему, ведь мы же написали, что спрайт "Enemy" уничтожается, разве не все должны уничтожится?? Или нет? Как вообще наш конструктор понимает, какую копию нужно уничтожить, а кукую нет?
Чтобы ответить на эти вопросы, разберём, как констракт работает с копиями в данном случае.

Разбор
Дело в том, что условия в констракте неоднозначны. Сначала нам кажется, что "Bullet on collision with Enemy" - это только условие и на выходе имеет только ДА или НЕТ, то есть выполнять ли действие или нет. Но это так далеко не для всех констрактовских "условий". Обычно в констракте кроме ответа ДА или НЕТ, на выходе мы имеем ещё некие подробности о ситуации. Эти подробности и есть тот самый пик: после выполнения условия констракт "записывает" IID объектов, с которыми произошло, например, касание. И потом действия происходят именно с этими копиями объектов. Вернёмся к нашей "игре". Для того, чтобы было понятнее, я буду "рисовать" то, что мы не видим в эвентах - пик. Сейчас сами всё поймёте.

Вот какой пик у нас идёт на старте, без выполнения каких-либо условий:
Pick4.png

Если ситуация не изменится, то любое действие, направленное на Enemy будет направленно на все его копии.
Но у нас идёт условие, после которого пик меняется:
Pick5.png

После условия констракт будет выполнять условия только для пули, у которой IID = 0, и для врага, у которого IID = 0. Если вы новичёк, поясню, IID - это номер копии объекта. Если пуля попадёт во второго врага, то действия будут уже выполнятся для второй копии. Поэтому уничтожатся только 1 пуля и только 1 определённый враг. Так же пик может быть не только одной копией, но и несколькими, например, если пуля попадёт сразу в обоих врагов.
Что же происходит после выполнения этого события? Подставим ещё один эвент:
Pick6.PNG

Пик первого события уже не будет распространятся на второе событие, а условие "On start of layout" не пикает не одну из копий, поэтому после второго события уничтожатся все враги.
Но пик будет распространятся на под-события (sub-event).

Какие же условия будут "пикать"?
Все условия, вызываемые из меню условий объекта, будут пикать его копии.
Pick7.PNG

Так же если нас просят выбрать объект:
Pick8.PNG

А так же в любом случае, если вот тут у нас отображается его иконка:
Pick9.PNG

Конечно, это не все методы пика копии, расписать их все будет сложно

Заключение
Этот урок только про некую основу пика, есть ещё темы которые я не затронул, но они связаны с пиком и имеют смысл. Если найдутся люди, которым это надо, я продолжу цикл уроков по пику в констракте. Если у вас есть вопрос - спрашивайте. Если вы с чем-то не согласны - пишите, мы вместе подумаем на эту тему.

 Conditions для пика
Кроме обычных условий, которые позволяют пикать объекты, у нас есть специальные условия. Но условиями их назвать сложно, так как обычно их используют только для пика. Но не смотря на это они также несут и условную часть. Например, мы располагаем несколько копий спрайта и текст:
p1.PNG

Добавляем вот такое событие:
p2.PNG

И при игре к переменной будет прибавляться 1 каждый клик, пока на сцене будут копии спрайта, то есть в нашем случае в итоге переменная дойдёт только до 5.
Рассмотрим конкретно каждый condition для пика:
Pick highest/lowest - это условие позволяет выбрать копию, у которой наибольшее/наименьшее значение переменной (только одну).
p3.PNG

Pick by unique ID - это условие выбирает ту копию, у которой UID будет равно выбранному значению (только одну, ведь UID у каждой копии каждого объекта свой и не повторяется).
p4.PNG

Pick nearest/furthest - выбирает ближайшую/самую дальнюю копию от заданных координат (также только одну).
p5.PNG

Pick top/bottom - выбирает нижнюю/верхнюю копию по оси Z (также только одну).
p6.PNG

Это были условия, которые можно найти в разделе условий объекта почти любого типа. Ещё есть следующие условия для пика, которые располагаются в разделе системных условий:
p7.PNG

Pick all - выбирает все копии объекта, о применениях я расскажу в следующих статьях.
p8.PNG

Pick by evaluate - выбирает все копии объекта, у которых выражение в expression, которое должно иметь отношение к объекту, равно 0.
p9.PNG

Pick overlapping point - выбирает все копии объекта, которые пересекают выбранную точку.
p10.PNG

Pick by comparison - аналогичен Pick by evaluate, только с сравнением.
p11.PNG

Pick nth instance - аналогичен Pick by unique ID, только вместо UID IID, то есть выбирает копию по её номеру.
p12.PNG

Pick random instance - выбирает случайную копию объекта.
p13.PNG
Последний раз редактировалось Stalin 03 мар 2018, 17:11, всего редактировалось 1 раз.
Изображение
Аватара пользователя

Участник
Сообщений: 473
Я тут с 13 апр 2017
Двиг: Unity
Лицензия: Personal
Репутация 178 [ ? ]

Сообщение Основы пика в Construct
» 23 фев 2018, 15:24

Полезный урок, хоть и коротковат. Сам не раз думал подобное написать, но было лень.
Думаю, что стоит добавить темы по "System - Pick..." и тонкости пика в подсобытиях.
Аватара пользователя

Игродел
Сообщений: 1179
Я тут с 06 июл 2015
Репутация 296 [ ? ]

Сообщение Основы пика в Construct
» 23 фев 2018, 15:37

Bishop писал(а):Думаю, что стоит добавить темы по "System - Pick..." и тонкости пика в подсобытиях.

Это я и имел ввиду
Stalin писал(а):Этот урок только про некую основу пика, есть ещё темы которые я не затронул, но они связаны с пиком и имеют смысл.

Если ещё будут люди, которые захотят продолжение, то запилю таки. На этот урок у меня ушёл час
Изображение
Аватара пользователя

Участник
Сообщений: 473
Я тут с 13 апр 2017
Двиг: Unity
Лицензия: Personal
Репутация 178 [ ? ]

Сообщение Основы пика в Construct
» 24 фев 2018, 12:28

Stalin, как по мне, если добавить про Pick object, пик в подсобытии и нюансы (например, конфликт условий Pick... и On...), то можно и в лучшие уроки перенести.
Аватара пользователя

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

Сообщение Основы пика в Construct
» 24 фев 2018, 12:31

ReviveR200, это лучший комплимент :blush:
Сюда добавить или отдельно?
Изображение
Аватара пользователя

Участник
Сообщений: 473
Я тут с 13 апр 2017
Двиг: Unity
Лицензия: Personal
Репутация 178 [ ? ]


Сообщение Всё о пике в Construct
» 03 мар 2018, 17:12

Добавил статью о особых событиях для пика
Изображение
Аватара пользователя

Участник
Сообщений: 473
Я тут с 13 апр 2017
Двиг: Unity
Лицензия: Personal
Репутация 178 [ ? ]

Сообщение Всё о пике в Construct
» 04 мар 2018, 16:06

Stalin, Добавь пример про клик по 2 копиям, наложеным друг на друга, и Pick top/bottom. По этому нюансу много вопросов бывает.
Аватара пользователя

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



Вернуться в Другие уроки по Construct 2

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

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

Наверх