Syank, Пришлось сделать много условий для плавности и аккуратности. state - это скрипты движения при разных условиях(ходьба, плавание, толкание ящика). При изменении view_hview[0]/600 на целое число картинка забавно сужается по вертикали, но дрожание никуда не уходит. При увеличении значение увеличиваются скорость и сила сжатия.
Сообщение отредактировал SirArCade - Четверг, 21 Декабря 2017, 23:50
Использую Game Maker: Studio. И столкнулся с неприятной проблемой. В комнате, когда игрок движется, камера отдаляется, а когда стоит, приближается. И в эти моменты отдаления и приближения, всё находящееся в поле зрения камеры начинает дрожать. Помогите, пожалуйста, решить эту проблему.
Помогите с анимацией перехода в комнату. В старых версиях Game maker была функция: при переходе в следующую комнату можно было выбрать эффект. В GameMaker: Studio такой функции нет. Подскажите, есть ли специальные команды для этих эффектов или можно как-то эту функцию вернуть?
В общем, я делаю платформер. При нажатии на Alt появляется второй игрок с помощью объекта ob_spawn_clone. Уровень заканчивается, при взаимодействии с ob_end_LVL.
Код
/// ob_player2 //Step if (place_meeting(x, y, ob_end_LVL) && keyboard_check_pressed(ord('S'))){ global.win ++; instance_destroy(); }
Код
///ob_player //Step if (place_meeting(x, y, ob_end_LVL) && keyboard_check_pressed(ord('X'))){ global.win ++; instance_destroy(); }
Код
if instance_number(ob_spawn_clone) = 1{ if global.win = 1{ if (instance_number(ob_player) = 0) && (instance_number(ob_player2) = 0){ instance_create(0, 0, ob_menu); } } } if instance_number(ob_spawn_clone) = 0{ if global.win = 2{ if (instance_number(ob_player) = 0) && (instance_number(ob_player2) = 0){ instance_create(0, 0, ob_menu); } } }
Проблема в том, что когда финиширует один игрок - всё нормально, появляется ob_menu и можно перейти на следующий уровень. А когда двое, то ob_menu начинает беспрерывно появляться. Помогите. В чём ошибка?
В общем всё просто. Я хочу чтобы я мог бы работать над одной игрой с разных устройств. Например одну неделю я программирую дома, а потом переезжаю в другой город и продолжаю программировать эту же игру и обратно. Подскажите пожалуйста как это можно устроить.
Работаю на GameMaker: Studio и я даже не мог подумать, что у меня появится такая тупая проблема, но. Если я в перехожу в первую комнату где есть объект в котором используется событие Draw, а после этого перехожу во вторую комнату где используется другой объект с событием Draw то всё, что рисуется смещается вверх. Зато, если я не буду переходить в первую комнату то во второй всё будет рисоваться правильно.
Rean, я использовал переменную hspeed из-за того что у переменной hsp есть максимальное значение для плавного движения, а при прыжке от стены требовалась скорость выше максимальной и при использовании hsp объект просто телепортировался.
Я пытаюсь сделать платформер, вроде всё хорошо, но есть одна проблема. Если игрок попадает в верхний угол, то он по какой то причине телепортируется вниз, хотя не должен. Пожалуйста помогите. вот код:
Код
//Horizontal movement if (key_Left && !key_Right && (hspeed > -maxSpeed)){ hsp -= acc; } else if (!key_Left && key_Right && (hspeed < maxSpeed)){ hsp += acc; } else if (!(key_Left ^^ key_Right)){ if (hsp > 0){ hsp -= spd; } else if (hsp < 0){ hsp += spd; } }
if (hspeed > 0){ hspeed -= spd;[spoiler] } else if (hspeed < 0){ hspeed += spd; }
hsp = clamp(hsp, -maxSpeed, maxSpeed);
//Grounded if (grounded){ dashes = 1; }
//Jumping if key_Jump{ if grounded {vsp = jumpHeight} } if (!key_Jump && vsp < 0){ vsp += grav*2; } vsp += grav;
if (key_Jump_pressed && !grounded && semiJumps > 0) {vsp = semiHeight semiJumps -= 1} if vsp <= maxVsp and key_Jump{ vsp = jumpHeight }
if (place_meeting(x, y - 1, ob_ground) && vsp < 0 && (place_meeting(x + 1, y, ob_ground) || place_meeting(x - 1, y, ob_ground))){ vsp = 0; }
///Collision // Vertical collision(vsp) if place_meeting(x, y + vsp, ob_ground){ while !place_meeting(x, y + sign(vsp), ob_ground) y += sign(vsp); if sign(vsp) = 1 {grounded = 1 semiJumps = semiQuan} vsp = 0; } else { grounded = false; }
//Horizontal collision(hsp) if place_meeting(x + hsp, y, ob_ground){ while !place_meeting(x + sign(hsp), y, ob_ground) x += sign(hsp); hsp = 0; } if place_meeting(x + hsp, y, ob_ground){ while !place_meeting(x + sign(hsp), y, ob_ground) x += sign(hsp); hsp = 0; }
//Horizontal collision(hspeed) if place_meeting(x + hspeed, y, ob_ground){ while !place_meeting(x + sign(hspeed), y, ob_ground) x += sign(hspeed); hspeed = 0; } if place_meeting(x + hspeed, y, ob_ground){ while !place_meeting(x + sign(hspeed), y, ob_ground) x += sign(hspeed); hspeed = 0; }
//Wall Jump if place_meeting(x+1, y, ob_wall) && !grounded && vsp > 0 {vsp = 0.1}; if place_meeting(x-1, y, ob_wall) && !grounded && vsp > 0 {vsp = 0.1};
if key_Jump_pressed && place_meeting(x+1, y, ob_wall) && !place_meeting(x, y+1, ob_ground){ vsp = -1.5 hspeed = -2 ; } if key_Jump_pressed && place_meeting(x-1, y, ob_wall) && !place_meeting(x, y+1, ob_ground){ vsp = -1.5 hspeed = 2; }
Добавлено (19 января 2017, 20:26) --------------------------------------------- Я не понимаю, вопрос слишком сложный и поэтому никто не может помочь, или слишком тупой и поэтому никто не хочет отвечать?
Сообщение отредактировал SirArCade - Четверг, 19 Января 2017, 20:27