Среда, 27 Ноября 2024, 07:44

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Управление с изменением спрайтов по 8 осям
OletronДата: Понедельник, 28 Февраля 2022, 15:36 | Сообщение # 1
частый гость
Сейчас нет на сайте
Тихо!Тихо! Не надо ругаца, я уже начинаю переходить на gms,
не кричай. ok
кхм, надо сделать 2D управление по восьми осям , а спрайт изменялся по четырём осям.
Спасибо...

сорри за тупой вопрос сам понял это сделать, завтра кину код

Старый Код (cringe)

Первый скрипт в step:
if keyboard_check(ord("W")) && place_free(x,y-4) {y-=4}
if keyboard_check(ord("S")) && place_free(x,y+4) {y+=4}
if keyboard_check(ord("D")) && place_free(x+4,y) {x+=4}
if keyboard_check(ord("A")) && place_free(x-4,y) {x-=4}
Второй код тоже в step (СОЗДАЙ ЕЩЕ ОДИН СКРИПТ В STEP)
if keyboard_check(ord("W")) sprite_index=(u)//спрайт вверх
if keyboard_check(ord("S")) sprite_index=(d)//спрайт вниз
if keyboard_check(ord("D")) sprite_index=(RIGHT)//спрайт вправо
if keyboard_check(ord("A")) sprite_index=(l)//спрайт влево


Оптимизированный код oт Соre (epic)
А вот оптимизированный код в одном скрите, скажем спасибо Corе за помощь)
Цитата Core ()
if keyboard_check(ord("W")) {sprite_index=up; if place_free(x,y-4) then y-=4}
if keyboard_check(ord("A")) {sprite_index=left; if place_free(x-4,y) then x-=4}
if keyboard_check(ord("S")) {sprite_index=down; if place_free(x,y+4) then y+=4}
if keyboard_check(ord("D")) {sprite_index=right; if place_free(x+4,y) then x+=4}


Сообщение отредактировал Oletron - Вторник, 01 Марта 2022, 23:48
TLTДата: Понедельник, 28 Февраля 2022, 21:45 | Сообщение # 2
Сейчас нет на сайте
Ну введи переменную, которая изменяется от нажатия той или иной комбинации кнопок и отвечает за анимацию спрайта в том или ином положении (либо флип спрайта).

Дао, выраженное словами, не есть истинное Дао.
OletronДата: Вторник, 01 Марта 2022, 01:04 | Сообщение # 3
частый гость
Сейчас нет на сайте
Цитата TLT ()
Ну введи переменную, которая изменяется от нажатия той или иной комбинации кнопок и отвечает за анимацию спрайта в том или ином положении (либо флип спрайта).

слишком сложно, можно ещё проще)


Сообщение отредактировал Oletron - Вторник, 01 Марта 2022, 01:04
MagicHeroДата: Вторник, 01 Марта 2022, 03:01 | Сообщение # 4
участник
Сейчас нет на сайте
Oletron, куда проще то? Делаешь 8 обьектов кнопок или проще один но с различными зонами нажатия. И в зависимости на какую кнопку или область (если обьект-кнопка одна) нажали меняешь переменную которая отвечает за индекс спрайта.
OletronДата: Вторник, 01 Марта 2022, 13:58 | Сообщение # 5
частый гость
Сейчас нет на сайте
Цитата MagicHero ()
Oletron, куда проще то? Делаешь 8 обьектов кнопок или проще один но с различными зонами нажатия. И в зависимости на какую кнопку или область (если обьект-кнопка одна) нажали меняешь переменную которая отвечает за индекс спрайта.

чееел читай что выше я написал
CoreДата: Вторник, 01 Марта 2022, 16:22 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Немного оптимизировал твой код. Так выглядит в два раза компактнее и второй скрипт создавать ненужно :)

Код

if keyboard_check(ord("W")) {sprite_index=up; if place_free(x,y-4) then y-=4}
if keyboard_check(ord("A")) {sprite_index=left; if place_free(x-4,y) then x-=4}
if keyboard_check(ord("S")) {sprite_index=down; if place_free(x,y+4) then y+=4}
if keyboard_check(ord("D")) {sprite_index=right; if place_free(x+4,y) then x+=4}




Сообщение отредактировал Core - Вторник, 01 Марта 2022, 16:27
OletronДата: Вторник, 01 Марта 2022, 23:41 | Сообщение # 7
частый гость
Сейчас нет на сайте
Цитата Core ()
Немного оптимизировал твой код. Так выглядит в два раза компактнее и второй скрипт создавать ненужно

Спасиба)
Таой код теперь висит сверху!


Сообщение отредактировал Oletron - Вторник, 01 Марта 2022, 23:47
  • Страница 1 из 1
  • 1
Поиск:

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