Как создать незаконченный прыжок?

Я хочу создать незаконченную игру с прыжками. Я использую код суперперемычки. основная часть изменения высоты мира:

while (y < WORLD_HEIGHT - WORLD_WIDTH / 2) {
    ...
    y += (maxJumpHeight - 0.5f);
    y -= rand.nextFloat() * (maxJumpHeight / 3);
}

если я изменяю условие while на большое число (например, 100 или 1000), частота кадров становится низкой (я получаю отставание). я пробую много вещей. но я не мог добраться до правильного ответа. если кто-то может, помогите мне. (Извините за мой английский...)


person Hosein    schedule 29.03.2012    source источник
comment
Я думаю, что незаконченный прыжок - это неправильный перевод doodle jump? Код, который вы цитируете, является кодом макета уровня. Что конкретно вы изменили? И чего вы пытаетесь добиться? Вы пытаетесь сделать уровни выше?   -  person P.T.    schedule 29.03.2012
comment
если вы имеете в виду, что я хочу создать игру, подобную doodle jump, я должен сказать да. я могу сделать свой уровень выше этого, просто измените «y ‹ WORLD_HEIGHT - WORLD_WIDTH / 2» на «y ‹ WORLD_HEIGHT * 100». или число. это просто, но если я изменю его на число, например 1000, частота кадров уменьшится. Я хочу знать, как изменить это число, чтобы получить максимальную высоту...   -  person Hosein    schedule 30.03.2012


Ответы (1)


изменение

while (y < WORLD_HEIGHT - WORLD_WIDTH / 2) {

to

while (y < WORLD_HEIGHT * 100) {

в World.generateLevel сгенерирует гораздо больше контента, но на самом деле не сделает уровень длиннее (система отображения будет отображать только до WORLD_HEIGHT, а замок в конце уровня все еще будет в такое же место.

Если вы хотите сделать очень большой уровень, измените определение самого WORLD_HEIGHT. В настоящее время установлено около 20 экранов платформ.

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

person P.T.    schedule 30.03.2012
comment
спасибо за Ваш ответ. я проверил ваши изменения, прежде чем задать свой вопрос. это работает хорошо. а насчет WORLD_HEIGHT было 20*15, теперь я меняю на 15*200. К сожалению, я не могу проверить это на своем нексусе. но я просто проверяю это на java. кажется, работает лучше, чем когда я меняю while на while (y < WORLD_HEIGHT * 1000) { . в любом случае, большое спасибо. - person Hosein; 31.03.2012