Во многих ситуациях при создании игры нужно связать вместе два объекта, таким образом, что бы каждым экземпляр дочернего объекта однозначно относился к своему родительскому объекту. Например у вас есть множество врагов (родительские объекты) в игре, и у каждого врага есть полоска жизней (дочерний объект). В Clickteam fusion 2.5 такая связка объектов происходит когда вы создаете два объекта в одном событии и при этом дочерний объект вы создаете относительно родительского. Теперь давайте подробно.
Объекты. Настройка сцены.
Все очень просто, добавьте из библиотеки на сцену какого-нибудь персонажа.
Затем снимите галочку «создавать при старте» в свойствах этого персонажа.
После этого нужно добавить объект счетчика и превратить его в горизонтальный бар для жизней. Нажмите на меню Файл (Insert> Insert New Object) и добавьте объект counter. У него тоже снимите галочку «создавать при старте». Теперь что бы превратить числовой счетчик в полоску жизней нужно поставить ему тип Horizontal bar и задать для него цвет. Обязательно нужно поставить Minimum Value — 0, а Maximum Value — 100, именно диапазон этих значений и отражает горизонтальный бар счетчика.
Создаем переменную жизней у персонажа и сразу устанавливаем в значение 100.
Что бы особо не заморачиваться с движением персонажа, выставим ему тип bouncing ball.
События. Логика построения связи родитель-потомок
Будем создавать новых человечков нажатием клавиши ПРОБЕЛ.
И вместе с человечком в этом же событии будем создавать счетчик жизней в позиции относительной к человечку.
Далее того, что бы полоска жизней перемещалась вместе с персонажем нужно создать событие Always (Всегда) и присвоить позицию относительно персонажа.
Здесь же в событии Always создаем действие присвоения значению счетчика значения переменной «Жизни».
Если вы сейчас запустите свою игру и нажмете пробел несколько раз вы увидите как появляются персонажи с жизнями. Теперь давай создадим события для нанесения урона персонажам. Мы можем создать простое событие клика мышкой по персонажу и здесь отнимать у него 10 жизней:
1. Создаем событие клика мыши по объекту персонажа;
2. Отнимаем 10 из переменной «Жизни».
Запустите игру. Теперь по клику мыши на человечке у него укорачивается полоска жизней и именно у того по которому кликнули, что говорит о том что каждая полоска жизней относится к своему персонажу.
Теперь нам осталось сделать, разве что, события для отталкивания человечков от краев сцены
и уничтожать персонажа если его жизни равны нулю
Полный код:
Скачать исходный файл.
Вывод
Вот так во Fusion вы можете соединять объекты вместе устанавливая связь родитель-потомок. Когда вы создаете два объекта в одном событии, они автоматически становятся парой, и от этого будут зависеть любые будущие события, условия или выражения над этими объектами.
Если вы не создадите оба объекта в одном событии, Fusion не будет автоматически их соединять и вам придется делать это вручную, об этом можно прочитать тут.
Связь объектов родитель-потомок — это очень эффективный и экономящий время метод, который вам наверняка пригодится в разработки игр.
Используйте эту функцию в своих будущих проектах и будет вам счастье!
не совсем по теме но близко, создал так же полоски с хп привязал их к переменной хп у объекта(героя) , и при нанисении урона переменная уменьшается и полоска тоже должна но она не уменьшается, в чем может быть проблема ? когда хп 0 полоска исчезает
Наверно не установили максимальное и минимальное значение счётчика.
перепроверил, так и оказалось, спс
Когда вы создаете два объекта в одном событии, они автоматически становятся парой- что значит парой? Не понимаю принцип индетифицирования их как пара, почему прога это делает, но нас не предупреждает.? А так урок хороший очень, мне понравился
Здесь всё дело в сортировке объектов. В данном примере мы создаём два объекта в одном действии, и получается, что мы создаём экземпляр человечка под номером 1 и экземпляр счётчика жизней под номером 1, в следующий раз эти объекты уже будут под номерами 2 и 2, потом 3 и 3 и т.д. По этому значение переменной Жизни у персонажа относиться к жизням с тем же порядковым номером сортировки. Эта особенность работает и в том случае, когда вы просто одновременно копируете два объекта в редакторе кадра. Я думаю, этот метод помогает избежать путаницы в множественных экземплярах объектов и упрощает работу, в том смысле, что вам не приходиться прописывать привязку каждого экземпляра явным образом.
Наконец, нашёл нормальный «Туториал», да ещё и с исходником. Люблю этот сайт!
А есть на этом сайте что нибуть про создание врагов, например их бесконечное появление?
Так ведь в этом примере враги могут появляться бесконечно. Точнее столько раз сколько нажать пробел . Можно изменить это событие, на событие таймера (the timer->Every) и сделать появление врагов хоть каждые полсекунды
отличный пример, спасибо