Среда, 27 Ноября 2024, 12:47

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Game Maker проверка поворота
Pavelik_xpДата: Вторник, 06 Августа 2019, 00:10 | Сообщение # 1
был не раз
Сейчас нет на сайте
В общем у меня по карте ходят враги в разном направление но их спрайт не меняется, в общем я хочу через проверку поворота менять их спрайты но не знаю как (. Кто шарит подскажите пж любопытному новичку)

пробовал в степе вражин делать так но не робит ( Да вражины у меня ходят в любом напровлении хоть на 95 или же на 359 ну и тд.
if direction =90 {sprite_index=137}
if direction =180 {sprite_index=138}
if direction =270 {sprite_index=136}
if direction =360 {sprite_index=139}

Добавлено (06 Августа 2019, 00:11)
---------------------------------------------
http://s1.uploadpics.ru/images/bJQRXciHJr.png

StormTДата: Вторник, 06 Августа 2019, 04:35 | Сообщение # 2
участник
Сейчас нет на сайте
Тогда без проблем.
Только, сколько кадров поворота ты будешь использовать?

Я делал гонки и там кадр на каждые 10 градусов, выходит на 360 нужно 36 кадров.
Для такого случая можно взять направление, поделить на 10, округлить - получишь нужный кадр.
Например так:
Код
image_index = round(direction/10);


---------------------------------------------
Например, у тебя есть человек, который смотрит в разные стороны и в каждом шаге ты меняешь его угол (путём переключения кадра - image_index) - ок, но если человек идёт - надо бы ещё и анимацию ходьбы привязать сюда? Для этого рассмотрим простую анимацию в три кадра, где
1кадр - ноги вместе
2кадр - левая нога впереди
3кадр - правая нога впереди
Соответственно надо, чтобы кадры менялись в порядке 1-2-1-3 и так по кругу.

Например, создаём переменную kadr=1 (она будет отвечать за анимацию),
создаём повторяющийся будильник[0] на 20 шагов,
в будильнике каждый раз меняем значение кадра на 1.
Далее проверяем, какой сейчас кадр - соответсвующий спрайт и используем.
В примере я сделал, если кадр 5 (то есть уже лишний), то мы всё-равно рисуем нужный спрайт, будто кадр снова первый, но значение "кадр" принудительно меняем на 1. Это для того, чтобы меньше делать проверок вроде if kadr > 4 kadr = 1 итд.

Код
alarm[0] = 20;
kadr++;
switch (kadr)
{
    case 1: sprite_index = s_pl_move1; break;
    case 2: sprite_index = s_pl_move2; break;
    case 3: sprite_index = s_pl_move1; break;
    case 4: sprite_index = s_pl_move3; break;
    case 5: sprite_index = s_pl_move1; kadr = 1; break;
    default: break;
}





Сообщение отредактировал StormT - Вторник, 06 Августа 2019, 04:55
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг