Mipfikus
Новичок
Репутация: -1
Offline
API: GameMaker Studio 2
Сообщений: 4
|
 |
« : Июль 14, 2018, 20:50:40 » |
|
Помогите пожалуйста Не могу сделать прыжок для свой игры платформера Вот код который я написал , но я не знаю что вписать в поле отмеченное смайликами: // Переменные right = keyboard_check(vk_right) || keyboard_check((ord("D"))); left = keyboard_check(vk_left) || keyboard_check((ord("A"))); jump = keyboard_check(vk_up); //Движение вправо if (right) { phy_position_x += 4; } //Движение влево if (left) { phy_position_x -= 4; } // Прыжок  if (jump) { } 
|
|
|
Записан
|
|
|
|
PRIZZRAK
Новичок
Репутация: 1
Offline
API: GameMaker Studio 2
Сообщений: 14
|
 |
« Ответ #1 : Июль 14, 2018, 22:05:56 » |
|
Раз на физике, physics_apply_impulse наверное)
|
|
|
Записан
|
|
|
|
Mipfikus
Новичок
Репутация: -1
Offline
API: GameMaker Studio 2
Сообщений: 4
|
 |
« Ответ #2 : Июль 14, 2018, 22:14:33 » |
|
у меня вопрос : как использовать этот код?
Добавлено: Июль 14, 2018, 22:17:05 И мой вопрос был как сделать прыжок
|
|
« Последнее редактирование: Май 14, 2022, 20:51:50 от Mipfikus »
|
Записан
|
|
|
|
DmitryDS
Потому что я такой-сякой
GM Pro user
Репутация: 159
OfflineНаграды: ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](https://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)  ![За постоянность! [100 дней на форуме] За постоянность! [100 дней на форуме]](https://forum.hellroom.ru/awards/79b1a4915bff7098a4a1984ad370be2c_hellroomforum_time_bronze.gif)
API: GameMaker Studio Master
Сообщений: 1061
|
 |
« Ответ #3 : Июль 15, 2018, 05:55:59 » |
|
Во-первых, перемещать предметы в физическом мире, напрямую изменяя их координаты - очень, очень плохая идея. Работаете в физическом мире - используйте импульсы и силы, иначе получите много очень неожиданного. Во-вторых, PRIZZRAK вам ответил: берете и прикладываете вертикальный импульс. Как работает эта функция, почитайте уж в мане самостоятельно.
|
|
|
Записан
|
Я никогда никого не пытаюсь оскорбить или обидеть, хотя порой веду себя вызывающе. Не обижайтесь, я не со зла 
|
|
|
Mipfikus
Новичок
Репутация: -1
Offline
API: GameMaker Studio 2
Сообщений: 4
|
 |
« Ответ #4 : Июль 15, 2018, 19:18:47 » |
|
Вы сказали что перемещать об. в физ. мире напрямую изменяя из координаты очень плохая идея. Тогда какая хорошая?
|
|
« Последнее редактирование: Май 14, 2022, 20:52:10 от Mipfikus »
|
Записан
|
|
|
|
DmitryDS
Потому что я такой-сякой
GM Pro user
Репутация: 159
OfflineНаграды: ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](https://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)  ![За постоянность! [100 дней на форуме] За постоянность! [100 дней на форуме]](https://forum.hellroom.ru/awards/79b1a4915bff7098a4a1984ad370be2c_hellroomforum_time_bronze.gif)
API: GameMaker Studio Master
Сообщений: 1061
|
 |
« Ответ #5 : Июль 15, 2018, 19:28:13 » |
|
Коль скоро вам 11 лет, у вас, насколько я помню, уже должна была быть физика. Из нее вы должны были узнать, что реальные предметы перемещаются под действием сил, приобретая импульс.
И если бы вы читали то, что вам пишут, вы бы уже заметили, что на ваш вопрос ответили.
|
|
|
Записан
|
Я никогда никого не пытаюсь оскорбить или обидеть, хотя порой веду себя вызывающе. Не обижайтесь, я не со зла 
|
|
|
PRIZZRAK
Новичок
Репутация: 1
Offline
API: GameMaker Studio 2
Сообщений: 14
|
 |
« Ответ #6 : Июль 15, 2018, 20:20:50 » |
|
Если нажата клавиша прыжка и переменная прыжок = false, physics_apply_impulse(xpos,ypos,ximpulse,yimpulse) переменная прыжка становится true. и если идет place_meeting по y + 1, объект пола то переменнная прыжка false
|
|
|
Записан
|
|
|
|
Bag
Посетитель

Репутация: 7
Offline
Пол: 
API: GameMaker Studio 2
Сообщений: 21
|
 |
« Ответ #7 : Июль 15, 2018, 22:45:03 » |
|
Здравствуйте. Предлагаю следующий вариант: Create:phy_rotation = 0; phy_fixed_rotation = true; //Запрещаем вращение
//*********************************************//
Impulse_Right = 15; //Сила импульса вправо Impulse_Left = -15; //Сила импульса влево Impulse_Up = -300; //Сила импульса вверх
Step:// Переменные right = ( keyboard_check(vk_right) || keyboard_check((ord("D"))) ); left = ( keyboard_check(vk_left) || keyboard_check((ord("A"))) ); jump = ( keyboard_check(vk_up) ); //Движение вправо if (right) { physics_apply_impulse(x, y, Impulse_Right, 0) //Импульс направленный вправо } //Движение влево if (left) { physics_apply_impulse(x, y, Impulse_Left, 0) //Импульс направленный влево } // Прыжок
if (jump) { if (position_meeting(x, y+1, Obj_Wall)) //Если под объектом есть поверхность, то можно прыгать { physics_apply_impulse(x, y, 0, Impulse_Up) //Импульс направленный вверх } }
При параметрах: Gravity Y = 40 Density = 0.2 Friction = 0.4 (У объекта стены Friction = 1)
|
|
|
Записан
|
|
|
|
Mipfikus
Новичок
Репутация: -1
Offline
API: GameMaker Studio 2
Сообщений: 4
|
 |
« Ответ #8 : Июль 17, 2018, 15:37:23 » |
|
Спасибо за код! было пара ошибок но я их исправил, но всё еще не работает прыжок. У вас он с этим кодом работал?
|
|
|
Записан
|
|
|
|
Bag
Посетитель

Репутация: 7
Offline
Пол: 
API: GameMaker Studio 2
Сообщений: 21
|
 |
« Ответ #9 : Июль 17, 2018, 23:09:27 » |
|
Спасибо за код! было пара ошибок но я их исправил, но всё еще не работает прыжок. У вас он с этим кодом работал?
Если не работает прыжок, значит не выполняется условие - if (position_meeting(x, y+1, Obj_Wall)), а не выполняется оно скорее всего из-за того, что у вас origin (центр спрайта) установлен иначе. Попробуйте установить origin на Bottom Centre и заменить условие на if (position_meeting(x, y+2, Obj_Wall)), должно помочь.
|
|
|
Записан
|
|
|
|
сергей не умелый
Новичок
Репутация: 0
Offline
API: GameMaker Studio 2
Сообщений: 1
|
 |
« Ответ #10 : Декабрь 25, 2019, 19:05:02 » |
|
Я все сделал как надо а не работает прыжок. Работал в game maker studio 2.
В create я написал: Impulse_Up = -300
В step я написал: if (keyboard_check(vk_up)) { if (position_meeting(x, y+1, o_wall)) { physics_apply_impulse(x, y, 0, Impulse_Up) } }
Помоги пожалуйста.
|
|
|
Записан
|
|
|
|
D_Ex_Machina
Новичок
Репутация: 0
Offline
API: GameMaker Studio 2
Сообщений: 1
|
 |
« Ответ #11 : Февраль 15, 2020, 21:31:02 » |
|
У меня была похожая проблема. Попробуй не растягивать объект, а каждый раз его подставлять его. Мне это помогло.
|
|
|
Записан
|
|
|
|
Kitor
Посетитель

Репутация: 0
Offline
Пол: 
API: Game Maker 8.0 Pro
Сообщений: 23
url=http://www.topglobus.ru/besplatno-userbar-foru
|
 |
« Ответ #12 : Август 04, 2020, 23:54:55 » |
|
step //прыжок if keyboard_check(ord('W')) if !place_free(x+0,y+1) if yskor=0 {yskor-=visota_prizka y-=visota_prizka}
Phisics();
creat //гравитация gravitacija=0.4 yskor=0 visota_prizka=9
scripts:название Phisics
//gravitacija if place_free(x+0,y+1) yskor+=gravitacija else yskor=0
//limit skorosti v niz if yskor<100 y+=yskor else {y+=100 yskor=100}
|
|
|
Записан
|
|
|
|
|