Понедельник, 27 Мая 2024, 00:52

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Персонаж не может идти по неровной поверхности
smile196Дата: Воскресенье, 03 Мая 2015, 13:15 | Сообщение # 1
участник
Сейчас нет на сайте
У каждого блока есть маска, делаю по примеру. Я сделал блок наклонный, для него маску, и персонаж должен взбираться. Но когда я подхожу к наклонному блоку, персонаж в него упирается, а, если на него сверху прыгнуть, то персонаж проваливается. surprised Помогите, плиз.
FadeBakerДата: Воскресенье, 03 Мая 2015, 13:54 | Сообщение # 2
JavaSE Game Developer
Сейчас нет на сайте
В событии движения вправо:
Код
for (i = 0; i < 8; i++) {
     if (place_free(x + 5, y - i)) {
        x += 5;
        y -= i;
        break;
     }
}

Для движения влево "+" заменить на "-".


Уроки по GM
Minecraft 2D на GM
— Мои проекты —
Blood Harvest [2D] — Original
Blood Harvest [2D]: Remastered Edition
Adventure Craft [2D] — Sandbox
Space Shock [2D] — Scroll Shooter
Intel® Core™ i5-3570K 3.40 GHz, 8 GB RAM, GeForce GTX 750 Ti, Monitor: LG 23EA63V-P.
smile196Дата: Воскресенье, 03 Мая 2015, 16:41 | Сообщение # 3
участник
Сейчас нет на сайте
Код
{  
  if (place_free(x+2,y) || place_meeting(x+2,y,obj_spring_left))
  {
   if (!global.fin && !nlr && !spinattack && !roll && press != 1)
   {
    friction = 0;
    if (air)
    {
     if (hspeed < 0)
     {
      hspeed += runspeed*3
     }
     if (hspeed < maxrunspeed)
     {
      hspeed += runspeed;
     }
     left = false;
    }
    else
    {
     if (hspeed >= 0)
     {
      braking = false;
     }
     if (left && (hspeed < -maxrunspeed/1.5 || braking))
     {
      braking = true;
      hspeed += 0.4-hspeed/20;
      sprite_index = spr_sonic_brake_l;
     }
     else if (hspeed < 0)
     {
      hspeed += 3*runspeed;
      left = false;
     }
     else if (hspeed < maxrunspeed)
     {
      hspeed += runspeed;
      left = false;
     }
    }
    if (!air && !braking)
    {
     if (hspeed > maxrunspeed)
     {
      left = false;
      sprite_index = spr_sonic_run_r;  
     }
     else
     {
      left = false;
      sprite_index = spr_sonic_walk_r;
     }
    }
   }
   if (roll && hspeed < 0)
   {
    hspeed += rollfriction*4;
   }
  }
  else
  {
   hspeed = 0;
   left = false;
   if (sprite_index != spr_sonic_push_r && !air && !roll)
   {
    sprite_index = spr_sonic_push_r;
   }
  }
}
Спасибо! Можешь подсказать куда это вставить здесь? (я делаю по примеру, и хотел как основу использовать, так, что не сильно разобрался в движении) Если какие-то действия непонятные, то игра про Соника, и действия из игр про него.

Добавлено (03 мая 2015, 16:41)
---------------------------------------------
Уже не надо помощи. Я понял что нужно сделать.

  • Страница 1 из 1
  • 1
Поиск:

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