| Передвижение героев в Game Maker | 
|  | 
| 
| CrazyBrain | Дата: Суббота, 13 Апреля 2013, 11:41 | Сообщение # 1 |  |   частый гость Сейчас нет на сайте | Условие:главный герой должен подпрыгнуть с одной платформы и приземлиться на другую платформу. Проблема: Прыгнуть-то герой прыгнул, а вот приземляется очень странно. Сначала он летит довольно таки не плохо, но, при приближении к платформе, он вдруг замедляется и очень плавно на неё падает. Думаю что ошибка в написанном мною коде, но моих знаний не хватает, что бы выполнить проверку самостоятельно...
   
 Create
 
 
 Step
 
 Код if place_free(x,y+1)                    {
 gravity = 1
 gravity_direction = 270
 }
 else
 {
 gravity = 0
 gravity_direction = 270
 }
 
 if keyboard_check_pressed(vk_up)
 {
 {
 if !place_free(x,y+1)
 {
 vspeed = -12
 jump = 1
 }
 }
 }
 if place_free(x-4,y)
 {
 if keyboard_check(vk_left)
 {
 sprite_index = main_hero2
 x-=4
 }
 }
 
 if place_free(x+4,y)
 {
 if keyboard_check(vk_right)
 {
 sprite_index = main_hero
 x+=4
 }
 }
 
 Collision with object wall
 
 
 Release A
 
 Код x-=4; image_xscale=-1;
 Release D
 
 Код x-=4; image_xscale=-1;
 Помогите, чем сможете)
 
 
   Сайт игры Movie Tycoon
 Форум игры Movie Tycoon на GCUP
 |  |  |  |  | 
| 
| Luxorix | Дата: Суббота, 13 Апреля 2013, 12:59 | Сообщение # 2 |  |   постоянный участник Сейчас нет на сайте | Сделал пример с твоим кодом. Все работает отлично. Думаю баг в масках спрайтов героя. Посмотри они одинакового размера у спрайта влево, вправо и стоп. Пример 
 LUXORIX GAMES
 |  |  |  |  | 
| 
| CrazyBrain | Дата: Суббота, 13 Апреля 2013, 14:22 | Сообщение # 3 |  |   частый гость Сейчас нет на сайте | Пересмотрел маски, всё с ними в порядке. Создал другой файл игры и с нуля прописал код, получилась та же фигня. Может ли быть такое, что проблема не в коде, а что то случилось с GM? Работаю на 8.0 PRO 
 
   Сайт игры Movie Tycoon
 Форум игры Movie Tycoon на GCUP
 |  |  |  |  | 
| 
| Luxorix | Дата: Суббота, 13 Апреля 2013, 16:15 | Сообщение # 4 |  |   постоянный участник Сейчас нет на сайте | Навряд ли что-то с гм. Мой пример работает? Если да, то ищи проблему в своей игре. 
 LUXORIX GAMES
 |  |  |  |  | 
| 
| CrazyBrain | Дата: Суббота, 13 Апреля 2013, 16:27 | Сообщение # 5 |  |   частый гость Сейчас нет на сайте | Luxorix, с твоим примером всё отлично. Перенёс все настройки с твоего примера в свою игру (хотя там ничего различного нет) и все равно это чёртово плавное приземление   
 
   Сайт игры Movie Tycoon
 Форум игры Movie Tycoon на GCUP
 |  |  |  |  | 
| 
| Kurymen | Дата: Суббота, 13 Апреля 2013, 16:34 | Сообщение # 6 |  |   был не раз Сейчас нет на сайте | CrazyBrain, при столкновении героя с wall попробуй так 
 
 Цитата x = xprevious; y = yprevious;
 
 if vspeed < 0
 move_contact_solid(90, -vspeed);
 else
 move_contact_solid(270, vspeed);
 
 vspeed = 0;
 |  |  |  |  | 
| 
| CrazyBrain | Дата: Суббота, 13 Апреля 2013, 16:47 | Сообщение # 7 |  |   частый гость Сейчас нет на сайте | Kurymen, просто шикарно) Всё исправилось и теперь приземление не плавное, а стандартное, только почему то при приземлении идёт откат на пару пиксилей назад, что очень сильно в глаза бросается. можно как-нибудь это исправить и за что отвечают параметры Код x = xprevious;  y = yprevious;
 
   Сайт игры Movie Tycoon
 Форум игры Movie Tycoon на GCUP
 |  |  |  |  | 
| 
| Kurymen | Дата: Суббота, 13 Апреля 2013, 17:47 | Сообщение # 8 |  |   был не раз Сейчас нет на сайте | Эти строки возвращают героя в прошлую позицию, до момента столкновения. 
 Попробуй так тогда:
 
 
 Код if (vspeed > 0 && not place_free(x,y+vspeed))  move_contact(270)
 
 vspeed = 0
 hspeed = 0
 |  |  |  |  |