Пятница, 22 Ноября 2024, 21:40

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Проблемы с столкновением в GMS
FYgamesДата: Понедельник, 18 Января 2021, 15:36 | Сообщение # 1
был не раз
Сейчас нет на сайте
Здравствуйте, у меня возникла проблема с использованием place_free();
Я хочу сделать платформер и пока только сделал модельку игрока и пол. Сразу же столкнулся с проблемой: проверка столкновения идёт не так, как надо. При написании place_free(x, bbox_bottom) он видит столкновение на 87 пикселей выше верхней границы пола.

Вот весь код:
gravity= 1;
if !place_free(x, bbox_bottom)
{
gravity= 0;
vspeed= 0;
move_outside_solid(90, 0)
}
JAMPERДата: Понедельник, 18 Января 2021, 17:52 | Сообщение # 2
почетный гость
Сейчас нет на сайте
Цитата FYgames ()
place_free(x, bbox_bottom)


В данном случае используется координата y вместо bbox_bottom. Почему так - написано в справке.

Цитата FYgames ()
move_outside_solid(90, 0)

Объект пола в обязательном порядке должен быть solid. Проверьте это значение в свойствах объекта или задайте его самостоятельно с помощью кода.


Zombie Day --- "Без шансов"
Space Conflict --- игра на Gamiron #8
Kill your brain --- игра на Gamiron #10
Eat them all!--- игра на Gamiron #12
FYgamesДата: Понедельник, 18 Января 2021, 18:37 | Сообщение # 3
был не раз
Сейчас нет на сайте
Цитата JAMPER ()
Объект пола в обязательном порядке должен быть solid. Проверьте это значение в свойствах объекта или задайте его самостоятельно с помощью кода.

Да, это понятно.

Цитата JAMPER ()

В данном случае используется координата y вместо bbox_bottom. Почему так - написано в справке.

Это тоже понятно. Вопрос в том, почему ГМЛ говорит, что столкновение с полом есть, если игрок находится выше пола в полтора его размера?

P.S. 87 пикселей -- расстояние между верхней границей пола и нижней границей игрока.


Сообщение отредактировал FYgames - Понедельник, 18 Января 2021, 18:38
Quad69Дата: Понедельник, 18 Января 2021, 19:32 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Цитата FYgames ()
place_free

Нужно писать так: place_free(x, y + 1);
Проще говоря, сначала объект перемещается в указанные координаты, проверяется столкновение и перемещается обратно.
  • Страница 1 из 1
  • 1
Поиск:

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