Главная » Статьи » Уроки » Для ветеранов |
Использование GMPhysics.
В этом уроке я разберу использование библиотеки GMPhysics. Сначала нам требуется инициализировать свою библиотеку, потом создать несколько статичных и динамичных объектов. Прим. Динамичный объект движется и подвергается действию физики (мяч, ящик и т.д.), а статичный просто стоит в твёрдом состоянии (пол, стена). Теперь скачайте архив с пустым примеров и откройте файл gmphy.gmk это будет наш проект в котором уже включена библиотека GMPhysics. Теперь в нашем проекте создаём объект o_control который будет контролировать действие библиотеки и инициализирует её. В этом объекте нужно создать событие Game Start и написать туда код который будет инициализировать библиотеку: init_physics("GMPhysics.dll"); А в событие шага напишите функцию устанавливающую скорость игрового мира: update_bodies(0.03); Прим. Если объекты движутся слишком медленно то увеличите эту переменную, а если они будут исчезать или двигаться слишком быстро то уменьшите. Дальше создайте два объекта кубов и нарисуйте им по спрайту. Первый будет статичным полом, а второй динамичным и подвластным гравитации. Откройте статичный объект и пишем в событие создания такой код: h = create_body(x,y,0,SHAPE_BOX,32,32); Теперь нужно разобрать аргументы функции: Первый и второй это координаты объекта, третий - плотность (ноль это статичный), четвёртый это форма объекта. В нашем случае это куб и следующие два аргумента его длинна и ширина. Так же можно использовать другие константы: SHAPE_SPHERE который делает форму круга и тогда аргумент пять это радиус. С этим объектом закончили перейдём к динамичному. В событие его создания пишем почти тот же код: h = create_body(x,y,1,SHAPE_BOX,32,32); И в событие шага: object_update(h); Который заставляет его двигаться. Расставляем объекты в комнате и тестируем. Если всё хорошо идём дальше. Теперь создадим из динамичного куба героя для платформера. Для этого внесём изменения в код нашего динамичного ящика. В событие шага следует дописать такой код: if keyboard_check(ord("A")) { set_body_hspeed(h,-50); } if keyboard_check(ord("D")) { set_body_hspeed(h,50); } if keyboard_check(ord("W")) { if (!place_free(x,y+6)) set_body_vspeed(h,-200); } Давайте разберём функции: set_body_hspeed(id,hspeed) - устанавливает горизонтальную скорость. set_body_vspeed(id,vspeed) - устанавливает вертикальную скорость. Вот и всё, передвижение героя по миру готово! Если будут вопросы, спрашивайте, не стесняйтесь. Прим. Если выбивает ошибку то сделайте объект o_control постоянным, в событие Game Start этого объекта перетащите кнопку "перейти в следующую комнату". Создайте ещё одну комнату, которая будет находится впереди игровой и поставьте туда o_control. Из игровой комнаты его удалите. | |
Просмотров: 1674 | Комментарии: 1
| Теги: |
Всего комментариев: 1 | ||
| ||