Ходьба по неровной поверхности - Разработка игр - Каталог статей - Game Maker
Вторник, 06.12.2016, 08:51
Главная Регистрация RSS
Приветствую Вас, Гость
Меню сайта
Файлы и ресурсы
Топ 5 участников
1. BRESS
Репутация: 221
Сообщений на форуме: 3239
2. Gracio001
Репутация: 181
Сообщений на форуме: 1370
3. Xomafok
Репутация: 164
Сообщений на форуме: 947
4. FarEastKmS
Репутация: 125
Сообщений на форуме: 359
5. aHDp
Репутация: 114
Сообщений на форуме: 755
Топ 5 игр
Agent Green 4.6 / 5.0
Wartime 4.3 / 5.0
FeDo 4.0 / 5.0
Adventures: ... 4.0 / 5.0
Secretive ha... 4.0 / 5.0

Топ игр составлен путем пользовательского голосования.

Если вы не согласны с какой-либо оценкой, примите участие и поставьте свой балл игре. Ваша оценка очень важна для нас ;)
Статистика



На сайте: 1
Гостей: 1
Пользователей: 0
никита
Просмотров страницы:
2055

Рейтинг материала:

Другие работы автора:
- -

Поиск по сайту
Game Maker
Если вы только-только начали изучать игрострой и еще даже не успели скачать сам Game Maker, предлагаем вам на выбор следующие версии программы:

Game Maker 8.1
Классика. Идеально подходит для создания простых 2D игр на PC. Требует активации.
Game Maker for Mac
Абсолютно та же программа, но только для пользователей Mac. Требует активации.
Game Maker Studio
Самая новая версия с возможностью кроссплатформенной разработки. Бесплатна.
Войти на сайт

Мини-чат
300

Так как чат открыт для всех, просьба отнестись с уважением к другим посетителям и не писать осознанно посты, оскорбляющие кого-либо, содержащие открытую рекламу/спам. Спасибо за понимание! :)
Опрос
Как Вы узнали о нашем сайте?
Всего ответов: 501
Мы в Вконтакте
Главная » Статьи » Разработка игр

Ходьба по неровной поверхности
Преждем чем читать статью, учтите, я ее не писал. Источник внизу.

Всем привет! Сегодня я Вам расскажу о том, как реализовать ходьбу по неровной поверхности в плаформере.

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

Давайте теперь рассмотрим код.
(Данный код помещать в Step)

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 записываем найденную свободную позицию и ставим проверку на эту позицию, и если она свободна, то перемещаем туда игрока и выходим из цикла.

Все готово! До встречи!


Источник: http://gcup.ru
Категория: Разработка игр | Добавил: никита (16.03.2012)
Просмотров: 2055 | Комментарии: 1 | Рейтинг: 2.3/11
Всего комментариев: 1
1 qwerto   (18.03.2012 18:51)
qwerto Способ не плохой, но он плохо оптимизирован, на слабых компьютерах fps может падать при движении.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]