Пятница, 19 Апреля 2024, 18:30

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Записи участника » DinamoPower [9]
Результаты поиска
DinamoPowerДата: Вторник, 09 Декабря 2014, 17:34 | Сообщение # 1 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
Кто может посоветовать пример, где (к примеру) после настройки персонажа(цвет волос, форма тела), при переходе в другую комнату, там где этот персонаж есть, все его характеристики оставались? Меня интересуют именно процесс сохранения данных между комнатах. Я возможно неправильно изъяснился.
DinamoPowerДата: Понедельник, 08 Декабря 2014, 18:27 | Сообщение # 2 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
LunarPixel, похоже я что-то неправильно делал, в любом случае спасибо!
DinamoPowerДата: Понедельник, 08 Декабря 2014, 18:08 | Сообщение # 3 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
LunarPixel, держите
Yandex.disk
DinamoPowerДата: Понедельник, 08 Декабря 2014, 17:56 | Сообщение # 4 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
LunarPixel, а откуда взялось
Цитата LunarPixel ()
alarm[0]=-1
? Я в коде такого не видел, на том месте где alarm[0]=-1 - (hsp==0). В любом случае уже пробовал вписывать смену спрайта в условие sprPlayerStand..
DinamoPowerДата: Понедельник, 08 Декабря 2014, 17:19 | Сообщение # 5 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
Anthem, даже без alarm'a анимация не хочет работать... Я походу уже разочаровался...
DinamoPowerДата: Понедельник, 08 Декабря 2014, 16:25 | Сообщение # 6 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
Цитата Anthem ()
после такого кода ничего уже не запустится

А как сделать так, чтобы и анимация была и alarm работал?
DinamoPowerДата: Воскресенье, 07 Декабря 2014, 21:58 | Сообщение # 7 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
jayreck, не помогло. Я думаю, стоит просто забить и пойти по более сложному пути: если игрок нажимает (KEY_ACTION) и при этом он рядом с objVirtyHelmet, появляется объект с той анимацией, которая нужна, он удаляется(игрок), а при завершении анимации в доп. объекте снова появляется игрок. Но я думаю, что есть наиболее простой способ(чтобы проиграть эту анимацию) и не такой тупой, но я не знаю в чем проблема ...

Добавлено (07 декабря 2014, 21:58)
---------------------------------------------
Точней, если присмотреться, то за долю секунды, если кнопка движения(KEY_RIGHT) или (KEY_LEFT) зажаты и при этом нажата кнопка (KEY_ACTION) и если игрок рядом с objVirtyHelmet можно увидеть эту анимацию(если не менять код, а оставить как было). Из этого следует вывод, что что-то мешает этой анимации


Сообщение отредактировал DinamoPower - Воскресенье, 07 Декабря 2014, 22:24
DinamoPowerДата: Воскресенье, 07 Декабря 2014, 21:05 | Сообщение # 8 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
jayreck, ах да забыл сказать, скорость ставил, не помогало.(в create скорость изначально 1 стоит, ничего не менял) Дело в том, что лично мое предположение такое: из-за того, что objPlayer соприкасается с землей(objBlock), у него, в неподвижном состоянии стоит спрайт/анимация sprPlayerStand и тем самым другая анимация не воспроизводится, возможно что-то другое.
DinamoPowerДата: Воскресенье, 07 Декабря 2014, 15:16 | Сообщение # 9 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
Всем привет!
В инете нашел код для качественного платформера:
objPlayer = > Create
Код

//Set up some variables for certain speeds
walksp=4; //Walking speed (4 pixels per frame)
jumpsp=-14; //Jumping speed (negative because it goes up)
grav=1; //Gravity strength (usually a small value)
//These variables are actually used to move the player
hsp=0; //Horizontal speed
vsp=0; //Vertical speed
ground=1; //Whether the player is on the ground


objPlayer = > step
Код

//Keyboard constants
//We use these so we can just type the variables
//instead of "keyboard_check(*)"

KEY_RIGHT=keyboard_check(vk_right);
KEY_LEFT=keyboard_check(vk_left);
KEY_JUMP=keyboard_check_pressed(vk_up);    
//This one's for variable jump height:
KEY_FALL=keyboard_check_released(vk_up);
//Now check if the player pressed left or right and move
if (KEY_RIGHT)
{
      hsp=walksp; //Walk right
      image_xscale=1; //Face right
}
if (KEY_LEFT)
{
      hsp=-walksp; //Walk left
      image_xscale=-1; //Face left
}
//Stop moving when no keys are pressed
if (!KEY_RIGHT and !KEY_LEFT) hsp=0;
//Make sure we don't hit a wall
if (place_meeting(x+hsp,y,objBlock))
{
      //Move until contact with the wall
      if (hsp!=0)
         while (!place_meeting(x+sign(hsp),y,objBlock))
            x+=sign(hsp);
      hsp=0;
}
//Because we don't use hspeed, we got to move ourselves
x+=hsp;
//Now for vertical motion (jumping and falling)
//Is the player in the air?
if (place_meeting(x,y+1,objBlock)) grounded=1;
else grounded=0;
//Jump with the up key when on the ground
if (KEY_JUMP and grounded)
{
      vsp=jumpsp;
}
//If we're in air moving up and jump key is released, we remove
//upward motion (so we fall and get variable jump height)
if (KEY_FALL and !grounded and vsp<-1) vsp=-1;
//Fall with gravity
if (!grounded) vsp+=grav;
//Now it's more complicated.
//When hitting the ceiling, vertical speed must stop.
//The if statement says, "if we hit the ceiling and are moving up"    
if (place_meeting(x,y+vsp,objBlock) && vsp<0)
{
      //We must move up until contact with the ceiling
      while (!place_meeting(x,y+sign(vsp),objBlock)) y+=sign(vsp);
      vsp=0;
}
//But if we are moving down and hit the floor, we have to land
if (place_meeting(x,y+vsp,objBlock) and vsp>0)
{
      //Move so we hit the ground
      var cc;
      cc=vsp+1; //A counter, so we don't get an infinite loop
      //Move down until we hit the floor
      while (!place_meeting(x,y+1,objBlock) and cc>=0) y+=1;
      //Now ground the player
      grounded=1;
      vsp=0;
}
//Again, we're not using vspeed, so we have to move ourselves
y+=vsp;
//Animation - check what our sprite's state is and set accordingly
if (grounded) //If we're grounded
{
      if (hsp==0) //Then if we're not moving, change to stand sprite
      {
         sprite_index=sprPlayerStand;
         image_speed=0; //Don't animate
      }
      else //But if we are moving, change to walk sprite
      {
         //Reset image index if just now switching to walk sprite
         if (sprite_index!=sprPlayerWalk) image_index=0;
         sprite_index=sprPlayerWalk;
         image_speed=0.5; //Change this to whatever works for you
      }
}
else //If we're not grounded, change to in air sprite
{
      sprite_index=sprPlayerInAir;
      image_speed=0; //Don't animate
}

На всякий случай - objBlock - солид, блок., sprPlayerInAir - анимация в воздухе., sprPlayerStand - анимация на месте., sprPlayerWalk - анимация движения.
(это не "усовершенствованный" мною код, а оригинал)
Потом добавил в create переменную Motion(не знаю почему я её так назвал), она отвечает за выключение действия кнопок KEY_RIGHT, KEY_LEFT, KEY_JUMP. То есть если motion=1 - персонаж может двигаться, если motion=0 - не может.
И вот эта переменная мне понадобилась. Суть: если персонаж дотрагивается до определенного объекта, при нажатии на кнопку E (Я её добавил и назвал KEY_ACTION), он не сможет определенное время двигаться и проигрывается анимация, а потом снова сможет выполнять действия.
Написал я этот код вот так:
Код

if place_meeting(x,y,objVirtyHelmet) // а это объект к которому нужно дотронуться    
       {
       if (KEY_ACTION)
       {
       motion=0
       sprite_index=sprHelmetAnim // это нужная анимация
       alarm[0]=30
       }       
       }

В результате - нужное время двигаться не могу(то есть все верно), а анимация никак не проигрывается, подскажите, что делать? (Если что, могу скинуть полный код, но с моими дополнениями)(возможно неясно изложил проблему)


Сообщение отредактировал DinamoPower - Воскресенье, 07 Декабря 2014, 15:27
Форум игроделов » Записи участника » DinamoPower [9]
  • Страница 1 из 1
  • 1
Поиск:

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