Понедельник, 29.04.2024, 01:31
Приветствую Вас Гость

Mominis Russia

Меню сайта
Категории раздела
Уроки по Mominis [9]
Здесь представлены основные возможности конструктора Mominis.
Сторонние конструкторы и движки [0]
Наш опрос
Стоит ли сайту переходить на платный хостинг?
Всего ответов: 310
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » Статьи » Уроки по Mominis

Прыжки в ручную и передвижение объекта по заранее определенной трaектории
Предположим у нас есть маленький синий человечик,

и мы хотим чтобы он бегал по заснеженному рельефу и перепрыгивал через небольшие пропасти.


Для этого первым делом надо создать вышеупомянутый рельеф и самого человечека, который умеет бегать и прыгать.

Создаем рельеф из двух спрайтов ground и hill ( можно было использовать один, но так удобней настраивать).
Так как человечек должен уметь бегать и прыгать, нарисуем соответствующие анимации.
Рельеф поместим вручную в комнате (room), а человечека пусть создает контроллер "gameController" помещеный в этой комнате.



ПРЫЖОК(JUMP):

Анимация:



Для бега используем обычную анимацию из 3 кадров, а вот с прыжком чуть сложнее.



Прыжок можно разделить на 3 фазы:
толчок, полет и приземление - "start_jump", "jump" и "finish_jump" соответственно.

Можно конечно использовать механизм обычной анимации когда кадры сменяют друг друга через равный интервал,
но в прыжке у каждой фазы своя продолжительность (200ms, 900ms и 300ms),
тогда анимация прыжка будет содержать 14 кадров, с интервалом по 100ms (2 х start_jump, 9 x jump, 3 x finish_jump). Но можно это сделать иначе, кому как удобней.

Тут это сделанно следующим образом:

По окончании каждой анимации (если была отмеченна птичка "Run Once"),
вызывается "Animation Ended" event,
в котором переключaeмся на другую анимацию (в данном случае меняем фазу прыжка)

Это то, что касается визуальной стороны дела.


Логика

В данном примере задуманно чтобы человечeк "подпрыгнул" и приземлился на той же высоте с которой начал прыжок.
Для этого в начале прыжка ("StartJump" custom event) переменная startJumpYPos получает значение начальной высоты прыжка.
Теперь когда человечeк вновь будет на этой высоте сработает условие окончания прыжка:

self.YPos >= self.jumpStartYPos && self.isJumping == TRUE

Сам прыжок совершается функцией "StartJump" которая задает начальную скорость в направлении прыжка и отрицательнное ускорение вниз и назад (гравитация + спротивление воздуха).
По окончании прыжка, человечек продолжает бежать в том же направлении, что и до прыжка.

В данном примере есть 2 прыжка.
Первый происходит когда срабатывает условие:

self.XPos >= FIRST_JUMP_X && self.XSpeed > 0

А второй сразу после прохoждения Path_1 (заранее заготовленой траектории):

self.onPath == 1 && self.PosInPath == -1




MOVE IN PATH (движение по заранее заготовленной траектории)

Для передвижения по path, надо его сначала создать.
Открываем Room и выбираем инструмент рисования траекторий



Рисуем path повторяющий рельеф холма и даем ему имя Path_1


(при малом расстоянии между точками стрелки не отображаются)

Подобным образом создаем второй path по дну оврага, и получает имя Path_2.

Теперь у нас есть две траектории (path). Для того чтобы человечeк начал двигаться по заданной траектории,
нам надо знать когда он находится в подходящем для этого месте.

Существует много способов, воспользуемся следующим:
Создается объект checkpoint.
На канвасе (canvas) рисуется небольшой прямоугольник с прозрачным контуром.
Поместим этот объект в место желаемого начала движения по траектории.
Теперь у человечека (man) создается Collision event с этим объектом checkpoint_1.
(Важно установить уровень точности на Bounding Box)



Для того чтобы checkpoint не был виден во время игры. В его "Create" event-е вызываем "Change Background Color",
и делаем его прозрачным



Когда объект заканчивает движение по траектории его параметр PosInPath получает значение "-1",
создаем Condition Event который сообщит нам (как только, так сразу) что перемещение по траектории окончилось.

self.onPath == 1 && self.PosInPath == -1

Переменную onPath используем для того, чтобы знать по какой траектроии движется объект, в данном случае по первой или по второй.

Спасибо Games Developer
Mo'Minis за предоставленный урок.

Категория: Уроки по Mominis | Добавил: Infernal54 (21.02.2010)
Просмотров: 1751 | Комментарии: 5 | Теги: логика, перемещение героя, путь, колизии, Прозрачность | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Полезности
Мини-чат
200