Tips & Tricks (нюансы, тонкости, лайфхаки)

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

Сообщение Tips & Tricks (нюансы, тонкости, лайфхаки)
» 04 янв 2018, 23:35

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

Итак, приступим.

1. Когда вы создаете в событиях какой-либо объект, его стартовые параметры берутся из объекта, находящегося на самом верхнем Layout-е из всех Layout-ов, содержащих этот объект. Если на этом Layout-е несколько таких объектов, то берется тот, у которого наименьший UID, т.е. тот который создан раньше.

2. События выполняются сверху вниз. Если вы включаете другие листы события в ваш лист событий, то они будут выполняться в зависимости от того, в какое место вы их поставите.
Частичными исключениями из данного правила являются - асинхронные события, функции, циклы, ожидания.

3. Если в действии вы создаете объект, то все дальнейшие действия, направленные на этот класс объектов будут применены именно к этому созданному объекту, независимо от того, какие объекты были отобраны в этом условии.

4. Пустое условие всегда истинно.

5. Условие "else" и инверсия условия - это не одно и то же. Например, инверсия "is on screen" сработает, если объект существует, но за пределами экрана. Else сработает, если на экране нет объектов, независимо от того, существуют ли они вообще или нет.

6. Если вы видите в значении переменной NaN, то, скорее всего, вы попытались вписать в числовую переменную текстовое значение. Используйте int(значение) или float(значение), чтобы это исправить.

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

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

9. Если вы в событиях отследили семью, а действие надо применить к конкретному объекту из этой семьи, или наоборот - просто знайте, что у них одинаковый UID.

10. Спрайтам можно задавать отрицательную ширину и высоту, в этом случае они будут отзеркалены.

11. В параметрах физики, где написано, что значение должно быть от 0 до 1 почти всегда можно задать значения, выходящие за рамки этого интервала, и это будет иметь смысл.

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

13. Никогда не сохраняйте ваш проект следующим способом - тык на крестик и ответ "сохранить" на вопрос при закрытии. Ибо если при сохранении возникнет ошибка, то C2 не просто не сохранит проект, но и удалит уже имеющийся, а сам все равно закроется. Лучше всегда нажимайте "File" - "Save".

14. Если у вас куча уровней и на этих уровнях куча копий объекта, параметры которого вы хотите изменить. Создайте новый пустой Layout, перейдите на него. После чего выберите ваш объект в списке object types и меняте параметры - будут затронуты копии объекта сразу на всех Layout-ах.

15. При запуске Layout-а, все объекты, добавленные на него в редакторе, создаются, т.е. их можно отловить условием "on create". Если у вас какие-то объекты добавлены в контейнер, например, "танк" и "башня танка", то на Layout в редакторе нужно добавлять лишь один из них, второй будет создан автоматически при запуске уровня.

16. Для переноса текста на другую строку можно использовать комбинацию клавиш Shift+Enter, т.к. при обычном нажатии Enter срабатывает симуляция нажатия кнопки "Ок" (полезно при формировании JSON-строки для массива). Также, при обычном использовании табуляции (клавиша Tab) будет срабатывать переключение по активным элементам. В таких случаях можно использовать комментарии, т.к. там табуляция работает и можно её скопировать.

17. Если в строке необходимо упомянуть конкретную копию объекта, то можно прописать этот номер в скобках после названия объекта. Например, sprite(12).angle для использования угла копии №12 объекта sprite. Номера копий назначаются в порядке появления копий, начиная от 0. Если одну из копий удалили, то у остальных пересчитываются номера в соответствии с их появлением.

18. После loopindex можно поставить скобки и в них прописать о каком цикле идёт речь

19. Функцию можно вызвать принудительно, вписав в консоль браузера команду: c2_callFunction("имя вашей функции").

20. Для создания пауз в цикле используйте действие wait[loopindex*задержка между действиями в секундах].

21. Infinity это константа равная бесконечности, её можно вычесть или прибавить к любому числу.

Пока все, что вспомнил. Если еще что-то вспомню - добавлю.
Также предлагайте свои пункты, если они будут годными, я буду добавлять их в шапку :ok:

Итак, на данный момент пункты составляли:
paradine: 1-15 пункты
Stalin: 2, 18 пункты
ReviveR200: 16-17 пункты
Mukai: 19-21 пункты
Последний раз редактировалось ReviveR200 12 янв 2018, 21:20, всего редактировалось 1 раз.
Причина: Добавил пункты Mukai
Аватара пользователя

Администратор
Сообщений: 1733
Я тут с 02 мар 2014
Репутация 365 [ ? ]

Сообщение Tips & Tricks (нюансы и тонкости)
» 05 янв 2018, 00:41

+
механика выполнения листа событий интересная тема
Изображение
Аватара пользователя

Участник
Сообщений: 752
Я тут с 31 май 2017
Репутация 171 [ ? ]

Сообщение Tips & Tricks (нюансы и тонкости)
» 05 янв 2018, 00:48

paradine, в принципе обо всём этом знаю, но кое что новое подцепил. И ещё:
paradine писал(а):2. События выполняются сверху вниз. Если вы включаете другие листы события в ваш лист событий, то они будут выполняться в зависимости от того, в какое место вы их поставите.

Мне кажется что тут есть исключения. Например функции: при вызове функции она тут же выполняется, где бы она в коде не стояла
Изображение
Аватара пользователя

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

Сообщение Tips & Tricks (нюансы и тонкости)
» 05 янв 2018, 10:27

repkino писал(а):механика выполнения листа событий интересная тема

Буду добавлять новые факты в том числе и по листу событий :ok:

Stalin писал(а):Мне кажется что тут есть исключения. Например функции: при вызове функции она тут же выполняется, где бы она в коде не стояла

Тут не так все просто.
Функция действительно выполняется сразу, независимо от того, как далеко она в коде, но вот если функций с одинаковым названием несколько, то вызываться они будут в том порядке, в котором расположены их условия "on function" - только не спрашивай, кому и зачем может понадобиться такое :biggrin:
А вообще ты прав, исключений тут много - асинхронные события, функции, циклы, wait. Я бы так сказал: события выполняются сверху вниз, если механика события явно не подразумевает иное. Спасибо за уточнение, обновил пункт :ok:
Аватара пользователя

Администратор
Сообщений: 1733
Я тут с 02 мар 2014
Репутация 365 [ ? ]

Сообщение Tips & Tricks (нюансы и тонкости)
» 05 янв 2018, 13:29

16? Для переноса текста на другую строку можно использовать комбинацию клавиш Shift+Enter, т.к. при обычном нажатии Enter срабатывает симуляция нажатия кнопки "Ок" (полезно при формировании JSON-строки для массива). Также, при обычном использовании табуляции (клавиша Tab) будет срабатывать переключение по активным элементам. В таких случаях можно использовать комментарии, т.к. там табуляция работает и можно её скопировать.

17? Если в строке необходимо упомянуть конкретную копию объекта, то можно прописать этот номер в скобках после названия объекта. Например, sprite(12).angle для использования угла копии №12 объекта sprite. Номера копий назначаются в порядке появления копий, начиная от 0. Если одну из копий удалили, то у остальных пересчитываются номера в соответствии с их появлением.
Аватара пользователя

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

Сообщение Tips & Tricks (нюансы и тонкости)
» 05 янв 2018, 16:49

ReviveR200, очень дельные советы, слышу впервые. Думаю, упростят работу в сложных местах кода
+

P.S. тему можно назвать "Топ 20 лайфхаков для с2" :biggrin:
Изображение
Аватара пользователя

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

Сообщение Tips & Tricks (нюансы и тонкости)
» 05 янв 2018, 18:05

ReviveR200, отличные пункты, добавил в шапку. Про первый я не знал.

Stalin писал(а):P.S. тему можно назвать "Топ 20 лайфхаков для с2" :biggrin:

Я думаю, их будет больше чем 20 wink::
Впрочем, слово "лайфхаки" добавил в заголовок, вдруг кто в поиск что-то такое вобьет.
Аватара пользователя

Администратор
Сообщений: 1733
Я тут с 02 мар 2014
Репутация 365 [ ? ]

Сообщение Tips & Tricks (нюансы, тонкости, лайфхаки)
» 08 янв 2018, 14:40

18? После loopindex можно поставить скобки и в них прописать о каком цикле идёт речь (только что узнал, хз, может об этом все знают, но об этом нигде не написано)
Изображение
Аватара пользователя

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

Сообщение Tips & Tricks (нюансы, тонкости, лайфхаки)
» 08 янв 2018, 23:08

19. Функцию можно вызвать принудительно, вписав в консоль браузера команду: c2_callFunction("имя вашей функции").

20. Для создания пауз в цикле используйте действие wait[loopindex*задержка между действиями в секундах].

21. Infinity это константа равная бесконечности, её можно вычесть или прибавить к любому числу.
Аватара пользователя

Модератор
Сообщений: 911
Я тут с 12 окт 2013
Репутация 246 [ ? ]

Сообщение Tips & Tricks (нюансы, тонкости, лайфхаки)
» 09 янв 2018, 13:26

А сгруппируйте эти советы плиз! Что связано с объектами, что с настройкой С2, что со слоями, что с листами событий...
Удобнее ориентироваться будет!

И да - добавьте наверно к этому списку пункт, что Поведение SINE с параметром Size нельзя применить к текстовому объекту) Это не совсем трюк и хинт, скорее бага, но обидная)
 Мой проект: God of Dungeon (жанр: roguelike)
Аватара пользователя

Участник
Сообщений: 394
Я тут с 23 фев 2014
Репутация 8 [ ? ]



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

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

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

Наверх