Как сделать прыжок для в game maker

Как сделать прыжок для в game maker

Гравитация и прыжки Винделика Дата: Воскресенье, 30.03.2014, 16:10 | Сообщение # 1

Новичок

Группа: Пользователи

Сообщений: 23

Награды: 0 Репутация: 13

Статус: Offline

Привет всем. Вот хочу я сделать бродилку, типа "Огонь и Вода" или "Супер Марио". И наткнулась на такую проблему - не могу сделать гравитацию и прыжки. У меня мячик в небеса улетает, а надо чтобы он прыгнул и приземлился. Как так сделать?   BRESS Дата: Воскресенье, 30.03.2014, 16:38 | Сообщение # 2

Мастер-ломастер

Группа: Администраторы

Сообщений: 3056

Награды: 0 Репутация: 221

Статус: Offline

Пример прикрепил к посту. Думаю, вы разберетесь. Но если что непонятно, спрашивайте, отвечу. Удачи! smile

Прикрепления: primer.gmk(9.5 Kb)


Для ваших вопросов по Game Maker есть специально созданный форум. Оставьте в покое мою личку. Спасибо за внимание!   Gracio001 Дата: Воскресенье, 30.03.2014, 20:31 | Сообщение # 3

Отменить рассвет

Группа: Администраторы

Сообщений: 1331

Награды: 2 Репутация: 181

Статус: Offline

Цитата Винделика ()

Привет всем. Вот хочу я сделать бродилку, типа "Огонь и Вода" или "Супер Марио". И наткнулась на такую проблему - не могу сделать гравитацию и прыжки. У меня мячик в небеса улетает, а надо чтобы он прыгнул и приземлился. Как так сделать?

Объясню, можно сказать, на пальцах.
Смотри: чтобы была гравитация в "стандарте" (то есть работала в зависимости только от существования прыжка, или же положительного значения его переменной) нужно в создании прописать:


Код

gravity=1//Гравитация в стандарт
jump=0//Переменная прыжка
//Упрощение условий:
m0=keyboard_check(vk_nokey)
m1=keyboard_check(vk_right)
m2=keyboard_check(vk_left)

Далее создаем событие "Шаг", пишем:

Код

if keyboard_check_pressed(vk_up)
{if jump<2
{vspeed=-10
jump+=1}
else
{}}

Уверен, что движение вы осуществили, но все-же помогу. Для легкого прописания дальнейшего кода стоит хранить функции движения в отдельных скриптах. Создаем scr_move, пишем


Код

if(m0)
{hspeed=0}
if(m1)
{hspeed=5}
if(m2)
{hspeed=-5}

В шаг добавьте:


Код

scr_move()

В столкновение с объектом земли пишите:


Код

jump=0
vspeed=0


Если что не так - пишите. Мог намудрить, ибо только что делал восстановление системы и GM под рукой нет. До свидания.
варвара сегодня плакала ночью,
боялась, что утро уже не наступит.   BRESS Дата: Воскресенье, 30.03.2014, 20:35 | Сообщение # 4

Мастер-ломастер

Группа: Администраторы

Сообщений: 3056

Награды: 0 Репутация: 221

Статус: Offline

Gracio001, перемудрил. Нужна была только гравитация, а ты тут еще столько напихал, да и растолковал так непонятно, что даже у меня крыша поехала)) Плюс все делается гораздо проще, чем ты сейчас написал.
Для ваших вопросов по Game Maker есть специально созданный форум. Оставьте в покое мою личку. Спасибо за внимание!   Gracio001 Дата: Воскресенье, 30.03.2014, 20:46 | Сообщение # 5

Отменить рассвет

Группа: Администраторы

Сообщений: 1331

Награды: 2 Репутация: 181

Статус: Offline

Цитата BRESS ()

Gracio001, перемудрил. Нужна была только гравитация, а ты тут еще столько напихал, да и растолковал так непонятно, что даже у меня крыша поехала)) Плюс все делается гораздо проще, чем ты сейчас написал.

Пишу, как я обычно делаю.
варвара сегодня плакала ночью,
боялась, что утро уже не наступит.   Винделика Дата: Воскресенье, 30.03.2014, 20:52 | Сообщение # 6

Новичок

Группа: Пользователи

Сообщений: 23

Награды: 0 Репутация: 13

Статус: Offline

BRESS, спасибо огромное, все получилось!   BRESS Дата: Воскресенье, 30.03.2014, 20:58 | Сообщение # 7

Мастер-ломастер

Группа: Администраторы

Сообщений: 3056

Награды: 0 Репутация: 221

Статус: Offline

Цитата Gracio001 ()

Пишу, как я обычно делаю.

Если интересует, то у меня вот так все обычно выходит (включая движение, но без учета работы с масками):

if place_free(x,y+2) gravity=1 else gravity=0;
if not place_free(x,y+vspeed) {
move_contact_solid(270,12)
vspeed=0;
y-=1;
}
if keyboard_check(vk_up) {
if not place_free(x,y+3) vspeed=-15;
}
if keyboard_check(vk_left) {if place_free(x-5,y) x-=5}
if keyboard_check(vk_right) {if place_free(x+5,y) x+=5}

Цитата Винделика ()

BRESS, спасибо огромное, все получилось!

Обращайтесь happy
Для ваших вопросов по Game Maker есть специально созданный форум. Оставьте в покое мою личку. Спасибо за внимание!   Винделика Дата: Пятница, 04.04.2014, 15:55 | Сообщение # 8

Новичок

Группа: Пользователи

Сообщений: 23

Награды: 0 Репутация: 13

Статус: Offline

Так, у меня снова проблема, на этот раз с очками. Мне надо, чтобы когда игрок ловил звездочку, в углу выходило "Очки +10", ну и очки соответственно прибавлялись. А когда уровень закончится, чтобы выходило окно, а в нем что-то типа "Очки: сумма очков". Подскажите, как так можно сделать?   BRESS Дата: Пятница, 04.04.2014, 16:00 | Сообщение # 9

Мастер-ломастер

Группа: Администраторы

Сообщений: 3056

Награды: 0 Репутация: 221

Статус: Offline

Винделика, подсказать могу, но вы, наверное, не поймете. Ладно, попробую. Создаете, значит, любую переменную и при выполнении определенного условия увеличиваете ее на 10. Далее просто выводите текст на экран в событии рисования. Если непонятно, отпишитесь - напишу пример.
Для ваших вопросов по Game Maker есть специально созданный форум. Оставьте в покое мою личку. Спасибо за внимание!   Винделика Дата: Пятница, 04.04.2014, 16:03 | Сообщение # 10

Новичок

Группа: Пользователи

Сообщений: 23

Награды: 0 Репутация: 13

Статус: Offline

BRESS, да, вы правы, я ничего не поняла XD   Gracio001 Дата: Пятница, 04.04.2014, 16:13 | Сообщение # 11

Отменить рассвет

Группа: Администраторы

Сообщений: 1331

Награды: 2 Репутация: 181

Статус: Offline

Винделика, если BRESS не скинул еще пример, то код ниже:
 Проблема 1:
Создай объект scores, в создание напиши:

Код

text=''

В рисование:


Код

draw_text(0,0,''+string(text)

Игроку в столкновении со звездочкой:


Код

scores.text='Очки+10'
alarm[0]=room_speed5

В аларм:

Код

scores.text=''


варвара сегодня плакала ночью,
боялась, что утро уже не наступит.   Gracio001 Дата: Пятница, 04.04.2014, 16:14 | Сообщение # 12

Отменить рассвет

Группа: Администраторы

Сообщений: 1331

Награды: 2 Репутация: 181

Статус: Offline

Винделика, вторую проблему опиши подробнее.
варвара сегодня плакала ночью,
боялась, что утро уже не наступит.   BRESS Дата: Пятница, 04.04.2014, 16:20 | Сообщение # 13

Мастер-ломастер

Группа: Администраторы

Сообщений: 3056

Награды: 0 Репутация: 221

Статус: Offline

Gracio001, невооруженным глазом ошибки видны =)
Винделика, ничего, если я вечерком скину пример? Сейчас лень как-то.
Для ваших вопросов по Game Maker есть специально созданный форум. Оставьте в покое мою личку. Спасибо за внимание!   Gracio001 Дата: Пятница, 04.04.2014, 16:22 | Сообщение # 14

Отменить рассвет

Группа: Администраторы

Сообщений: 1331

Награды: 2 Репутация: 181

Статус: Offline

BRESS, возможно). GM нет под рукой,
варвара сегодня плакала ночью,
боялась, что утро уже не наступит.   Винделика Дата: Пятница, 04.04.2014, 16:27 | Сообщение # 15

Новичок

Группа: Пользователи

Сообщений: 23

Награды: 0 Репутация: 13

Статус: Offline

Gracio001, выделяет красным ошибки в коде.
Цитата Gracio001 ()

Винделика, вторую проблему опиши подробнее.

Ну вот уровень закончился и должно вылезти всплывающее окно "Итоги уровня" а в нем набранная сумма очков. А у меня это самое окно никак не выходит... Цитата BRESS ()

Винделика, ничего, если я вечерком скину пример? Сейчас лень как-то.

Ладно =) Я пока с графикой поработаю.  
Как сделать прыжок для в game maker

Похожие записи:



Плотность вязания спицами узоры

Багажник для бурана своими руками

Вязаные игрушки на елку крючком схемы и описание