Loko™ |
Дата: Вторник, 13.11.2012, 10:13 | Сообщение # 1 |
Сообщений: [146]
|
Всем привет! На волне Loko™ и это очередной урок по Construct Classic. Сегодня мы будем учить героя подводному плаванию на манер Mario: Если герой находится в воде, то по нажатию определенной клавиши он движется вверх на расстояние прыжка. При этом скорость падения в воде ниже, чем на суше.
Поехали.
Для начала, нам понадобиться сама вода, поэтому рисуем полупрозрачный спрайт нужного размера: Insert an object – Sprite – Для своего случая, я выбрал инструмент заливка, и, чтобы уменьшить прозрачность, изменил значение в Alpha 1 с 255 на 150 – Сохраняем. Сразу переименуем его: Выделяем только что созданный спрайт – Properties –в поле Name пишем Water
Герой с поведением "Platform" должен быть у вас заранее, если его нет, и вы не знаете, как его сделать, читаем статью Создание 2D платформера а-ля Ghost Quest. Также герою необходимо предоставить новую переменную. Выделяем героя – Properties – Private Variables – Add/Edit – Зеленый плюс – в поле Name пишем Water – OK - Done
Добавляем клавиатуру и мышь: Insert an object – Mouse & Keyboard
Подготовительная часть закончена, переходим в редактор событий (Event Sheet Editor). Первое событие состоит в том, что если герой находится в воде, то изменяются его показатели, такие, как скорость падения, сила прыжка.
Событие: Insert event – bazis (это мой герой, выберите своего) – Is overlapping another object – Pick an object – Water - Finish
Действия: 1. New action – bazis – переходим во вкладку Platform – Set jump strength – пишем значение 400 – Finish 2. New action – bazis – переходим во вкладку Platform – Set gravity – пишем значение 600 – Finish 3. New action – bazis – Set value – в Private variable выбираем Water, в Value прописываем 1 – Finish
В первом действии мы увеличили силу прыжка до 400, чтобы в воде герой по нажатию клавиши прыжка двигался вверх с чуть большей дальностью, чем обычно. Второе действие – уменьшение гравитации, благодаря чему, герой падает с меньшей скоростью. В третьем действии мы изменили переменную, которая означает следующее: если 1 – герой в воде, если 0 – герой не в воде.
Теперь нужно настроить подсобытия этого события, где мы добавим возможность бесконечно подпрыгивать и такую плюшку, как увеличенная скорость падения при нажатии на клавишу вниз.
Подсобытие 1: Правой кнопкой мыши на только что созданное событие – Insert sub-event – MouseKeyboard – Key is down? – выбираем из списка Down arrow – Finish
Действие для подсобытия 1: New action – bazis – переходим во вкладку Platform – Set maximum fall speed – пишем значение 1000 – Finish Здесь мы сделали так, что по нажатию клавиши вниз, герой ускорял падение.
Подсобытие 2: Правой кнопкой мыши на только что созданное событие – Insert sub-event – MouseKeyboard – Key is down? – выбираем из списка Down arrow – Finish
Действие для подсобытия 2: New action – bazis – переходим во вкладку Platform – Set maximum fall speed – пишем значение 180 – Finish Теперь это событие нужно сделать противоположным, т.е. щелкаем правой кнопкой мыши на подсобытии 2 – Invert condition А здесь мы сделали так, что если клавиша вниз не нажата (отпущена), ускорение героя возвращается к стандартному.
Подсобытие 3: Правой кнопкой мыши на только что созданное событие – Insert sub-event – MouseKeyboard –On key pressed– выбираем из списка Z (это клавиша прыжка, если у вас другая – выберите нужную) – Finish
Действие для подсобытия 3: New action – bazis – переходим во вкладку Platform – Jump Этим подсобытием мы сделали возможность "прыгать" в воде находясь в "воздухе".
Итак, подводное плавание мы настроили, теперь нужно реализовать сброс всех настроек, при выходе героя на сушу.
События: 1. bazis – Compare a private variable – из Private variable выбираем Water, из Comparison выбираем Equal to, в Value прописываем 1 – Finish 2. Щелкаем правой кнопкой мыши на только что созданном событии – Insert new condition – bazis – Is overlapping another object – Pick an object – Water – Finish Сделаем событие №2 противоположным, щелкаем правой кнопкой по нему – Invert condition
Действия: 1. New action – bazis – Set value – выбираем Water и прописываем значение 0 – Finish 2. New action – bazis – переходим во вкладку Platform – Set jump strength – пишем значение 325 – Finish 3. New action – bazis – переходим во вкладку Platform – Set gravity – пишем значение 1500 – Finish 4. New action – bazis – переходим во вкладку Platform – Set maximum fall speed – пишем значение 1000 – Finish
Итак, первым действием мы вернули переменной значение 0, что означает, что герой находится на суше. Вторым действием мы вернули стандартную силу прыжка. Третьим действием мы вернули стандартное значение гравитации. И четвертым действием мы вернули стандартное значение ускорения падения.
Пару слов о переменной Water В данном примере можно спокойно обойтись и без этой переменной, и, если ее убрать, то все будет прекрасно работать. Тогда зачем же она? Эта переменная нужна, если вы будете вводить сразу несколько систем, основанных на переменных. К примеру, введете систему виса на крюке/платформе из моей прошлой статьи. Соответственно, Water предотвращает нежелательные конфликты в поведении героя.
Вот и все готово, проверяем, ставим лайк, подписываемся на канал, с вами был Loko™, пока!
Сообщение отредактировал: Loko™ - Вторник, 13.11.2012, 11:50 |
|
| |