2016-10-08 6 views
2

Я делаю игру для проекта на своем курсе, и мне интересно, как заставить «персонажа» совершить двойной прыжок (второй прыжок в воздухе). Это бесконечная игра, в которой игрок находится на фиксированной позиции на экране и должен прыгать и скользить под препятствиями, как они появляются на экране. В настоящее время у меня есть функции прыжка и слайда, хотя они нуждаются в тонкой настройке, чтобы сделать более точным и интересным использование.Возможно ли реализовать функцию «двойного прыжка» без использования холста html?

Я попытался использовать .stop(), чтобы отменить анимацию перехода и выполнить другой прыжок. Вот мой код в jsbin посмотреть:

http://jsbin.com/yekarel/edit?html,js,output

Действительно только ищет, чтобы увидеть, если это возможно, и как идти о делать это, хотя какие-либо предложения о том, прибирать код по-прежнему приветствуются. Благодарю.

Редактировать: Я пытаюсь избежать использования холста в этом проекте, так что только реально ищут решение, которое не включает холст.

+0

Я запуск jsbin в Chrome, и символ прыгает каждый раз, когда я нажимаю клавишу пробела. Нажимайте его достаточно времени, и персонаж прыгнет выше, чем «RUN!». текст. Как это отличается от того, что вы пытаетесь достичь? Вы пытаетесь ограничить последовательные прыжки максимум до двух? – MJH

+0

@MJH Я даже не осознавал, что это происходит. Зная, что теперь, хотя, да, ограничение последовательных прыжков максимум до двух звуков, как правильный путь. –

ответ

0

Я думаю, что это может быть достигнуто путем добавления var jumpCount = 0; к объявления переменных в начале, а затем сделать следующие изменения (в этом случае вы можете удалить doubleJump() и fallDown2() функции):

// jump function 
$(this).keyup(function(e) { 
    if(jumpCount < 2 && (e.keyCode === 0 || e.keyCode === 32)) { 
    jumpCount++; 
    $($character).animate({ top: '-=120px' }, { 
     duration: 350, 
     easing: 'linear', 
     complete: function() { 
     fallDown(); 
     } 
    }); 
    } 
}); 

function fallDown() { 
    $($character).animate({top: '+=120px'}, { 
    duration: 180, 
    easing: 'linear' 
    }); 
    jumpCount--; 
} 
+0

Это работает очень хорошо, спасибо! Все тайминги в анимации нуждаются в большой настройке, чтобы чувствовать себя хорошо, но вы мне очень помогли, поэтому спасибо @MJH –