Loko™ | Дата: Воскресенье, 11 Ноября 2012, 20:03 | Сообщение # 1 |
постоянный участник
Сейчас нет на сайте
| Всем привет. В этой статье я покажу, как в конструкторе игр Construct Classic с помощью простых манипуляций можно реализовать вис на крюке/выступе/платформе. Усаживаемся поудобнее, завариваем чай и читаем :-D
Общая подготовка Перед тем, как приступить к реализации вышеуказанной техники, нам понадобится спрайт героя и настройки поведения, как "Платформер" (подробнее в статье "Создаем 2D платформер а-ля Ghost Quest на Scirra Construct"). А также анимация для виса – "Hook" (герой висит на каком-то объекте)
Добавим герою новую переменную: Выделяем спрайт героя (у меня это bazis) – во вкладке Properties – Private Variable – Add/Edit – зеленый плюс – в поле Name пишем Hook – OK - Done Также добавьте клавиатуру: Insert an object – Mouse & Keyboard
Вис на крюке/выступе Как это будет выглядеть? Мне на ум приходит игра "Черный плащ" на денди, в которой герой цеплялся за платформы/крюки/кольца и другие выступы.
Т.е. есть крюк, есть герой. Когда герой касается крюка – он зависает в воздухе. Создаем вспомогательный объект – крюк. Insert an object – Sprite – Рисуем крюк – Сохраняем Сразу переименуем созданный спрайт: Выделяем созданный спрайт – Properties – Common – В Name пишем Hook
Далее создаем еще один вспомогательный объект: Insert an object – Sprite – Рисуем квадрат размером 5х7 пикселей – Сохраняем Переименуем его в Hand. Этот объект и будет тем предметом, что цепляется за крюк, выступ и все такое. Если его не сделать, а оставить, допустим, обычный спрайт героя во весь его рост – то наш герой будет цепляться за крюк всеми частями тела, которые будут пролетать рядом с крюком (руками, головой, левой пяткой). Сперва нам нужно привязать Hand к герою. Два раза щелкаем по спрайту героя. Откроется редактор изображений. Выбираем пункт Image Point, щелкаем по центру вверху изображения (т.е. по самой макушке героя), сохраняем, закрываем.
Переходим в редактор событий (Event Sheet Editor) Правая кнопка мыши – Insert event – System – Always
New action – Hand – Set position to another object – Pick an object – bazis – в поле Image point name or number вписываем 1 – Finish
Только что мы сделали привязку объекта Hand к герою, и теперь Hand всегда будет висеть над головой героя (поставьте ему Invisible on start, чтобы он стал невидимым, это делается во вкладке Properties, где мы переименовывали спрайты, только ниже).
Второе событие должно быть следующее: если герой соприкасается с крюком и при этом он находится в падении – герой зависает. Делаем: События: 1. Правая кнопка мыши – Insert event – Hand – On collision with another object – Pick an object – Hook – Finish 2. Правой кнопкой мыши по только что созданному событию - Insert new condition – bazis (это герой) – переходим во вкладку Platform – Is falling
Действия: 1. New action – bazis – переходим во вкладку Platform – Set air acceleration – прописываем значение 0 - Finish 2. New action – bazis – переходим во вкладку Platform – Set gravity – прописываем значение 0 – Finish 3. New action – bazis – переходим во вкладку Platform – Set Y component of motion – прописываем значение 0 – Finish 4. New action – bazis – переходим во вкладку Platform – Set X component of motion – прописываем значение 0 – Finish 5. New action – bazis – Set animation – прописываем значение "Hand" (в кавычках) 6. New action – bazis – Set value – выбираем переменную Hook и прописываем ей значение 1 - Finish
В первом и втором действиях мы сделали зависание нашего героя в воздухе. В действиях 3 и 4 мы убирали продолжение движения героя после зависания. Если их не ставить, оставив только 1 и 2, то при взаимодействии с крюком наш герой продолжит движение в том направлении, в котором двигался. Действие 5 – это установка анимации "Hook", подготовленной нами ранее. В действии 6 мы установили переменной значение 1, это нам понадобиться далее, как зацепка.
Третье события формулируется так: По нажатию на клавишу прыжка, герой отлипает от крюка, подпрыгивает и ему возвращаются все первоначальные настройки. Делаем: События: 1. Insert event – MouseKeyboard – On key pressed – Z (выбираем клавишу прыжка, у меня это Z) – Finish 2. Щелкаем правой кнопкой мыши по только что созданному событию - Insert new condition – bazis – Compare a private variable – в Private variable выбираем Hook, в Comparison выбираем Equal to, в Value прописываем 1.
Действия: 1. New action – bazis – переходим во вкладку Platform – Set air acceleration – прописываем значение 1500 - Finish 2. New action – bazis – переходим во вкладку Platform – Set gravity – прописываем значение 1500 – Finish 3. New action – bazis – переходим во вкладку Platform – Set jump strenght – прописываем значение 630 – Finish 4. New action – bazis – переходим во вкладку Platform – Jump 5. New action – bazis – переходим во вкладку Platform – Set jump strenght – прописываем значение 325 – Finish 6. New action – bazis – Set value – выбираем переменную Hook и прописываем ей значение 0 - Finish
В действиях 1 и 2 мы возвратили герою стандартные значения гравитации (если у вас они были другие – прописывайте свои). В пункте 3 мы временно усилили силу прыжка героя. Это нужно для того, чтобы прыжок с крюка был повыше. В пункте 4 мы делаем сам прыжок. В действии 5 мы возвращаем герою стандартную силу прыжка. Если вам не нужно это изменение силы прыжка – удаляйте действия 3 и 5. И в действии 6 мы возвращаем переменную к начальному значению, чтобы мы могли вновь цепляться за крюки.
А в последнем, четвертом, событии мы сделаем спуск с крюка, т.е. когда игрок нажимает на кнопку вниз – герой спрыгивает и ему возвращаются все первоначальные характеристики. Делаем: События: 1. Insert event – MouseKeyboard – On key pressed – Down arrow – Finish 2. Щелкаем правой кнопкой мыши по только что созданному событию - Insert new condition – bazis – Compare a private variable – в Private variable выбираем Hook, в Comparison выбираем Equal to, в Value прописываем 1.
Действия: 1. New action – bazis – переходим во вкладку Platform – Set air acceleration – прописываем значение 1500 - Finish 2. New action – bazis – переходим во вкладку Platform – Set gravity – прописываем значение 1500 – Finish 3. New action – bazis – Set value – выбираем переменную Hook и прописываем ей значение 0 - Finish
Здесь все просто, мы возвращаем все параметры в первоначальное значение.
Все готово. Спасибо за внимание. Надеюсь, вам помог мой урок.
Ghost Quest - 2D платформер в стиле 2D платформеров [Статья] Создаем 2D платформер а-ля Ghost Quest [Статья] Реализовываем вис на крюке/платформе
|
|
| |
Badheard | Дата: Понедельник, 12 Ноября 2012, 20:46 | Сообщение # 2 |
был не раз
Сейчас нет на сайте
| Хороший урок, но правилом хорошего тона считается добавление в конце статьи файла с примером.
|
|
| |
uslucifer | Дата: Вторник, 13 Ноября 2012, 21:47 | Сообщение # 3 |
постоянный участник
Сейчас нет на сайте
| И без примера все понятно, автору большое спасибо. вот если кому интересно посмотреть, идея на примере. http://uslucifer.narod2.ru/macho.cap и компилированный http://uslucifer.narod2.ru/macho.exe
Сообщение отредактировал uslucifer - Вторник, 13 Ноября 2012, 21:50 |
|
| |