Menu

Родительские и дочерние объекты

Во многих ситуациях при создании игры нужно связать вместе два объекта, таким образом, что бы каждым экземпляр дочернего объекта однозначно относился к своему родительскому объекту. Например у вас есть множество врагов (родительские объекты) в игре, и у каждого врага есть полоска жизней (дочерний объект). В Clickteam fusion 2.5 такая связка объектов происходит когда вы создаете два объекта в одном событии и при этом дочерний объект вы создаете относительно родительского. Теперь давайте подробно.

Объекты. Настройка сцены.

Все очень просто, добавьте из библиотеки на сцену какого-нибудь персонажа.
Parent персонаж
Затем снимите галочку «создавать при старте» в свойствах этого персонажа.
Parent галочка create at start

После этого нужно добавить объект счетчика и превратить его в горизонтальный бар для жизней. Нажмите на меню Файл (Insert> Insert New Object) и добавьте объект counterCounter. У него тоже снимите галочку «создавать при старте». Теперь что бы превратить числовой счетчик в полоску жизней нужно поставить ему тип Horizontal bar и задать для него цвет. Обязательно нужно поставить Minimum Value — 0, а Maximum Value — 100, именно диапазон этих значений и отражает горизонтальный бар счетчика.
Parent настройка бара жизней из счетчика

Создаем переменную жизней у персонажа и сразу устанавливаем в значение 100.

Parent переменная жизней

Что бы особо не заморачиваться с движением персонажа, выставим ему тип bouncing ball.
Parent тип движения персонажа

События. Логика построения связи родитель-потомок

Будем создавать новых человечков нажатием клавиши ПРОБЕЛ.

Parent новый человечек

И вместе с человечком в этом же событии будем создавать счетчик жизней в позиции относительной к человечку.
Parent новый бар жизней для человечка

Parent новый бар жизней в событии

Далее того, что бы полоска жизней перемещалась вместе с персонажем нужно создать событие Always (Всегда) и присвоить позицию относительно персонажа.
Parent постоянная позиция жизней

Parent новый бар жизней для человечка

Здесь же в событии Always создаем действие присвоения значению счетчика значения переменной «Жизни».
Parent установить значение счетчика
Parent счетчик равен жизням
Parent действия в событии ВСЕГДА
Если вы сейчас запустите свою игру и нажмете пробел несколько раз вы увидите как появляются персонажи с жизнями. Теперь давай создадим события для нанесения урона персонажам. Мы можем создать простое событие клика мышкой по персонажу и здесь отнимать у него 10 жизней:
1. Создаем событие клика мыши по объекту персонажа;
Parent событие клика по объекту
Parent выбрать персонажа в качестве объекта для события клика
2. Отнимаем 10 из переменной «Жизни».
Parent вычесть из переменной
Parent отнять 10 жизней
Parent событие отнимания жизней
Запустите игру. Теперь по клику мыши на человечке у него укорачивается полоска жизней и именно у того по которому кликнули, что говорит о том что каждая полоска жизней относится к своему персонажу.
Теперь нам осталось сделать, разве что, события для отталкивания человечков от краев сцены
Parent уход человечка за сцену
и уничтожать персонажа если его жизни равны нулю
Parent уничтожать персонажа с жизнями равными нулю
Полный код:
Parent полный код
Скачать исходный файл.

Вывод

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

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

Связь объектов родитель-потомок — это очень эффективный и экономящий время метод, который вам наверняка пригодится в разработки игр.

Используйте эту функцию в своих будущих проектах и будет вам счастье!

Во многих ситуациях при создании игры нужно связать вместе два объекта, таким образом, что бы каждым экземпляр дочернего объекта однозначно относился к своему родительскому объекту. Например у вас есть множество врагов (родительские объекты) в игре, и у каждого врага есть полоска жизней (дочерний объект). В Clickteam fusion 2.5 такая связка объектов происходит когда вы создаете два объекта в одном событии и при этом дочерний объект вы создаете относительно родительского. Теперь давайте подробно. Объекты. Настройка сцены. Все очень просто, добавьте из библиотеки на сцену какого-нибудь персонажа. Затем снимите галочку «создавать при старте» в свойствах этого персонажа. После этого нужно добавить объект…

10

Рейтинг: 5 ( 1 голосов)

    Рейтинг: 5,00 ( голосов - 10 )
Загрузка...
Комментариев: 9
  1. Akigami:

    не совсем по теме но близко, создал так же полоски с хп привязал их к переменной хп у объекта(героя) , и при нанисении урона переменная уменьшается и полоска тоже должна но она не уменьшается, в чем может быть проблема ? когда хп 0 полоска исчезает

  2. Павел:

    Когда вы создаете два объекта в одном событии, они автоматически становятся парой- что значит парой? Не понимаю принцип индетифицирования их как пара, почему прога это делает, но нас не предупреждает.? А так урок хороший очень, мне понравился

    • GQ:

      Здесь всё дело в сортировке объектов. В данном примере мы создаём два объекта в одном действии, и получается, что мы создаём экземпляр человечка под номером 1 и экземпляр счётчика жизней под номером 1, в следующий раз эти объекты уже будут под номерами 2 и 2, потом 3 и 3 и т.д. По этому значение переменной Жизни у персонажа относиться к жизням с тем же порядковым номером сортировки. Эта особенность работает и в том случае, когда вы просто одновременно копируете два объекта в редакторе кадра. Я думаю, этот метод помогает избежать путаницы в множественных экземплярах объектов и упрощает работу, в том смысле, что вам не приходиться прописывать привязку каждого экземпляра явным образом.

  3. "Новичок":

    Наконец, нашёл нормальный «Туториал», да ещё и с исходником. Люблю этот сайт!

  4. CSGO:

    А есть на этом сайте что нибуть про создание врагов, например их бесконечное появление? :?:

    • GQ:

      Так ведь в этом примере враги могут появляться бесконечно. Точнее столько раз сколько нажать пробел :-D . Можно изменить это событие, на событие таймера (the timer->Every) и сделать появление врагов хоть каждые полсекунды :wink:

  5. Seyanis:

    отличный пример, спасибо :wink:

Добавить комментарий

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)

Вступай в группу!