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

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Столкновение со стеной в платформере
TeTaTeTДата: Понедельник, 09 Марта 2015, 16:45 | Сообщение # 1
частый гость
Сейчас нет на сайте
При столкновении со стеной снизу, гг ненадолго останавливается. На это, конечно, можно не обращать внимания, но все равно раздражает. Физику писал по уроку.
Вот код в столкновении


Вот код физики


Я сначала подумал, что это происходит из-за того, что в столкновении обнуляется скорость, но без этого стало еще хуже.
Кстати, кто-нибудь уже делал платформеры на гамаке? Вообще стоит ли или попробовать другой конструктор?


Сообщение отредактировал PAULVIT - Понедельник, 09 Марта 2015, 16:51
YellowAfterlifeДата: Понедельник, 09 Марта 2015, 17:42 | Сообщение # 2
Сейчас нет на сайте
Можно сделать "отскок" при ударе об потолок,
Код
if speed_y > 0 {  
      move_contact_solid(270,-1);  
      speed_y = 0;  
} else {  
      move_contact_solid(90,-1);  
      speed_y = -speed_y * 0.5; // 0.5 - фактор смены скорости
}

Цитата PAULVIT ()
Кстати, кто-нибудь уже делал платформеры на гамаке? Вообще стоит ли или попробовать другой конструктор?
Точная статистика неизвестна, но есть основания полагать, что умеренное количество игр на GameMaker'е - платформеры. Этому способствует набор стандартных функций (place_free/place_meeting/..), что позволяют довольно легко создавать и изменять поведение объектов в зависимости от окружения.


TeTaTeTДата: Понедельник, 09 Марта 2015, 20:27 | Сообщение # 3
частый гость
Сейчас нет на сайте
Цитата YellowAfterlife ()
Можно сделать "отскок" при ударе об потолок,

К сожалению, не помогло. Это зависание заметно только тогда, когда гг передвигается. А если на месте прыгает и сталкивается со стеной, то вообще не заметно.
jayreckДата: Вторник, 10 Марта 2015, 10:56 | Сообщение # 4
участник
Сейчас нет на сайте
PAULVIT, попробуй так
в столкновение в твёрдым
Код

Сollision:
if(other.solid == true)
{ if(vspeed < 0)  move_contact_solid(90,5) else  move_contact_solid(270,5)  vspeed=0; hspeed=0; }
else  move_outside_solid(180,10);

Код

Create:
gravity_direction = 270 // гравитация вниз
gravity = 0.5


(и маску игроку не забудь сделать,если её нету) по крайней мере у меня так игрок не залипает только если не использовать метод x=предыдущая, y=предыдущая

и кста да платформеров на гамаке много сделано, одних только примеров платформеров целая куча


g-null-dc
Ippolit - тамагоч
немного моего пиксель арта


Сообщение отредактировал jayreck - Вторник, 10 Марта 2015, 10:56
vampir0305Дата: Вторник, 10 Марта 2015, 13:16 | Сообщение # 5
Unity C# Programmer
Сейчас нет на сайте
Решается очень легко вот код:
Код
if (vspeed > 0 && not place_free(x,y+vspeed))    {
       move_contact(270);         
       vspeed = 0;
    }


Красочная сюжетно-ориентированная игра-головоломка
TeTaTeTДата: Среда, 11 Марта 2015, 16:25 | Сообщение # 6
частый гость
Сейчас нет на сайте
Цитата vampir0305 ()
Решается очень легко вот код:
Код
if (vspeed > 0 && not place_free(x,y+vspeed))    {
       move_contact(270);         
       vspeed = 0;
    }


Мне это не поможет. Да и этот код выдран из какого-то примера. А там столкновение ужасно реализовано.
aFriendДата: Среда, 11 Марта 2015, 19:36 | Сообщение # 7
участник
Сейчас нет на сайте
Цитата PAULVIT ()
Мне это не поможет. Да и этот код выдран из какого-то примера. А там столкновение ужасно реализовано.

По-твоему каждый, кто пишет 3 строчки кода - украл этот код?
TeTaTeTДата: Четверг, 19 Марта 2015, 18:45 | Сообщение # 8
частый гость
Сейчас нет на сайте
Цитата aFriend ()
По-твоему каждый, кто пишет 3 строчки кода - украл этот код?


Я и не говорил, что он его украл dry

Добавлено (19 марта 2015, 18:45)
---------------------------------------------
Проблему решил. Оказалось, все гораздо проще, чем я думал.

Код
move_contact_solid


Вот эта процедура все портила. Она игнорировала передвижение объекта по оси X и тупо перемещала его по оси Y, из-за чего и получались рывки.
  • Страница 1 из 1
  • 1
Поиск:

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