Добавляем код для отскока Марио при падении на голову при нажатой клавиши Jump и нет.
Но проблема в том, что мы планируем в игре много врагов и постоянно копировать этот код будет не очень хорошо. Вместо этого мы можем воспользоваться функцией – т.е. дать имя некоторому набору кода и использовать только это имя.
Чтобы превратить этот код в функцию, выделяем эти два события, жмем правой кнопкой мыши и в появившемся меню выбираем Extract Events to a Function.
Появится такое окно.
В первом поле запрашивается расширение, в котором должна храниться функция. Помните, что функции сгруппированы в расширения. Если вы собираетесь создать несколько функций, связанных с одной и той же функцией (например, функции для управления инвентарем, боевой системой или для помощи вам в управлении врагами в вашей игре), лучше сгруппировать их в одном расширении с именем, связанным с функцией.
Это позволит затем совместно использовать расширение и повторно использовать его в других играх практически без изменений.
Вы можете либо выбрать существующее расширение, либо ввести имя нового, которое будет создано для вас.
Затем введите имя функции. Как и имя расширения, имя функции ограничено буквенно-цифровыми символами (0-9, a-Z) и символами подчеркивания. Пробелы не допускаются.
Создадим новое расширение Bounce и дадим название функции BounceFunction.
Далее настраиваем отображение функции в таблице событий.
Важным полем является предложение, отображаемое в таблице событий. Вы можете использовать _PARAMx_
, где x является числом (например: _PARAM1_
) для ссылки на параметр.
Далее настраиваем первый и второй параметры.
Создаем и добавляем теперь в наш код.
Т.е. вместо кучи строк кода мы теперь добавили только две.
Далее нам надо вернуть скорость прыжка
Теперь создаем новый объект BeachKoopa.
Далее создаем этот объект на месте Koopa, когда Марио атакует его.
Добавим булевскую переменную к новому объекту.
Далее в условии пишем “Если у BeachKoopa анимация BKSlide и TimeStarter равен false, что соответствует начальным данным, то запускаем таймер и TimeStarter теперь будет равен true.
И пока таймер не достигнет 0.75 секунд мы зададим объекту текущую скорость. Выше 65 нет смысла ставить так как в поведении у нас стоит максимальная скорость 64.
Но давайте чуть изменим текущую скорость.
Т.е. я сперва повысил максимальную скорость хатем задал текущую скорость минус время умноженное на 250. Получается скорость будет постоянно замедлятся.
Далее когда таймер перейдет за 1.5 секунды, мы зададим анимацию BKWalk и вернем максимальную скорость в 64.
Далее добавим еще одну переменную объекту.
Теперь выясним с какой стороны марио падает на врага и зададим соответствующее значение переменной.
И внесем некоторое изменение в наше выражение.
Теперь давайте внесем умножение к нашим очкам, добавив переменную к Марио.
Далее при взаимодействии с врагами умножим значения очков на нашу переменную, и в конце задаим переменной значение 2.
А когда наш персонаж будет на полу, то вернем значение переменной в 1. Это значит, если нам у нас получится подряд не касаясь земли уничтожить несколько врагов, то очки будут умножаться.
Далее добавим поведение, когда Марио после атаки снова касается Koopa, то ее панцирь отлетает.
Теперь добавим поведение, когда движущийся панцирь атакует другую Koopa. В начале скопируем Koopa и оставим анимацию панциря.
И добавляем ему переменные.
Теперь добавим следующий код.
Теперь добавим фон для игры. Для этого создадим новый спрайт и добавим туда какую-нибудь рандомную картинку с интернета.
Создадим новый слой и переместим картинку туда за остальными объектами.
Далее добавим фону поведение плавной камеры.
И добавим такой код.