Понедельник, 11 Ноября 2024, 01:05

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

Меню сайта
Категории каталога
Создание игр [357]
Статьи об общих понятиях связанных с созданием игр.
Программирование [83]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [147]
Статьи о программах для создания игр, уроки и описания.
Софт [43]
Различные программы, в том числе в помощь игроделам.
2D-графика [14]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [17]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [167]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [131]
Статьи, которые не вошли в определённые разделы.
Наш опрос
В игры каких из этих ретро-платформ вы играли?
Всего ответов: 2607
Главная » Статьи » Создание игр

Ходьба по неровной поверхности в платформере в 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)
Просмотров: 17184 | Комментарии: 4 | Рейтинг: 4.3/9 |
Теги: GML, GM, Game Maker, уроки, Ходьба по неровной поверхности в пл, платформер, Статьи по Game Maker, туториал, кодинг, Урок
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

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

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

+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 случ. движков
  • WorldSim3D
  • Urho3D
  • Vizard
  • Moai
  • Doom Classic iOS
  • Mortal Szombat
  • Zelda Classic
  • Point&Click Dev Kit
  • RPG Maker Unite
  • Easy FPS Editor
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг