xmov -=hero.walkIncrement;
13 hero.walkLeft();
14 }
15 if ((Key.isDown(Key.SPACE)||Key.isDown(Key.UP))&&
.okToJump){
16 okToJump =false;
17 if (!hero.isJumping &&!hero.inAir){
18 hero.inAir =true;
19 hero.ymov -=hero.jumpSpeed;
20 hero.jump();
21 }
22 }else if (!Key.isDown(Key.SPACE)&&
.!Key.isDown(Key.UP)){
23 okToJump =true;
24 }
25 if (Key.isDown(Key.DOWN)){
26 hero.crouch();
27 }else {
28 hero.unCrouch();
29 }
30 }
Первое, что мы делаем (строка 2), это сохранение текущего состояния наклона героя. Мы делаем это, чтобы помочь с ситуацией, описанной выше (скольжением под платформой и затем попыткой встать). В функции platformDetect() мы будем использовать это сохраненное состояние наклона, hero.wasCrouching, для определения должен ли быть герой вытолкнут.
Далее, в строках 3-7, мы изменяем свойство hero.walkIncrement в зависимости от того, находится ли герой на поверхности, на платформе, или в воздухе. Значение hero.walkIncrement определяет чувствительность персонажа (то есть, его ускорение).
В строках 8 и 11 мы проверяем похожие условия. Если клавиша с правой стрелкой нажата, и герой не наклоняется, мы перемещаем героя вправо. Если правая стрелка нажата, и герой наклоняется и находится в воздухе, мы также перемещаем героя вправо. Если случается любая другая ситуация, мы не перемещаем героя вправо. В строке 11 мы делаем такую же проверку, но с левой стрелкой.
Строки 15-24 управляют прыжком героя. В строке 15 мы проверяем, нажаты ли пробел или стрелка вверх (обе клавиши управляют прыжком), и равно ли okToJump значению true. Переменная okToJump установлена в true, когда ни пробел, ни стрелка вверх в данный момент не нажаты. Это сделано для того, чтобы вы не могли просто утопить пробел или стрелку вверх и герой бы прыгал автоматически при касании с землей – вы отпускаете клавишу, управляющую прыжком и нажимаете ее снова, чтобы герой прыгнул опять