Понедельник, 17 Декабря 2018, 15:06

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [314]
Статьи об общих понятиях связанных с созданием игр.
Программирование [69]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [124]
Статьи о программах для создания игр, уроки и описания.
Софт [28]
Различные программы, в том числе в помощь игроделам.
2D-графика [11]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [10]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [95]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [72]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Какой вид используется в ваших играх?
Всего ответов: 10095
Главная » Статьи » Создание игр

Ходьба по неровной поверхности в платформере в Game Maker
Всем привет! Сегодня я Вам расскажу о том, как реализовать ходьбу по неровной поверхности в плаформере. Для начала давайте рассмотрим способ данной реализации. Итак. Для работы моего способа у вас ходьба в платформере должна быть осуществлена следующим образом: при движении спрайт игрока должен отражаться соответственно направлениям, т.е. если игрок движется влево, то image_xscale = -1;, иначе image_xscale = 1;. Каким же образом мы будем перемещать игрока вдоль неровной поверхности? К нам на помощь приходят циклы. Циклом мы проверяем кажду свободную позицию впереди игрока и чуть выше, и если эта эта позиция свободна, то перемещаем туда игрока. Давайте теперь рассмотрим код.
(Данный код помещать в Step)

Code
var Dir, D, xn, yn;
if image_xscale == -1   
{Dir = 180; D = -10}
else   
{Dir = 0; D = 10}

if place_meeting(x+D, y, o_solid)
{

for(i = 0; i < 135; i += 2)
{
xn = x + lengthdir_x(speed, Dir + i);
yn = y + lengthdir_y(speed, Dir + i);
if place_free(xn, yn) {x = xn; y = yn; exit;}
}
}

В начале мы объявляем временные переменные, хранящие направление игрока и позицию впереди игрока.

Dir - напрвление
D - отражение спрайта (сторона, в которую смотрит игрок)
xn, yn - переменные, хранящие свободную позицию перед игроком.

Далее изменяем эти переменные. Если спрайт отражён влево, т.е. игрок смотрит влево, то изменяем Dir на 180 (180 - направление влево), D - присваиваем значение -10 (-10 - позиция левее). Аналогично с другим. Далее ставим проверку на столкновение с объектом. x+D - из переменной D считывается текущее направление игрока. (Лучше всего для всех твёрдых объектов создать один родительский, и проверять столкновение только с ним, потому, что проверять столкновения со всеми объектами - очень трудоёмкий процесс) И если столкновение произошло, то запускаем цикл, проверяющий все свободные позиции относительно игрока, и если эта позиция найдена, то в переменные xn, yn записываем найденную свободную позицию и ставим проверку на эту позицию, и если она свободна, то перемещаем туда игрока и выходим из цикла.

На этом урок окончен. Спасибо за внимание! До новых встреч! smile

Категория: Создание игр | Добавил: FadeBaker (18 Июля 2011)
Просмотров: 11057 | Комментарии: 4 | Рейтинг: 4.3/9 |
Теги: GML, GM, Game Maker, уроки, Ходьба по неровной поверхности в пл, платформер, Статьи по Game Maker, туториал, кодинг, урок
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Ходьба по неровной поверхности в платформере в Game Maker», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 4
+-3-
3 VedaViz   (12 Ноября 2011 09:57)
VedaVizвсе это конечно хорошо но напрягает (код). поэтому мне нравится делать это все визуально.

+0-
4 TheApKoT   (24 Января 2012 19:20)
TheApKoTСделай визуально цикл. А потом мы тебя похвалим.

+2-
2 Tarks   (23 Июля 2011 22:24)
TarksВсё, конечно, хорошо, но это сработает только для уровней, состоящих из больших блоков. Для ландшафтов типа Worms и Scorched Earth это будет чересчур ресурсоёмко. Через массив, по-моему, лучше было бы.

+1-
1 Transced   (21 Июля 2011 08:55)
TranscedВсе понятно)))Но нет сопровождающей графики.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • Starling
  • HÖVE
  • ADRIFT
  • Pixel Game Maker MV
  • MightyEngine
  • Open Zelda
  • CopperCube 5
  • Silent Walk: RENAISSANCE
  • LuxRender
  • Xaya Adventure Game Editor
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2018 Рейтинг