Интересный глюк нашел @TwoSpaces.
Он есть, как я понимаю, не только в Диззи 3, но и в 4, и в 6 части.
Корни одни, но две ипостаси.
Первая, которую я пофиксил - это если Диззи респавнится в воздухе, то падая через секунду произвольно нажмется огонь, и откроется инвентарь. И можно будет в воздухе выложить или взять предмет.
Вторая - это если шагнуть на какой-то экран, где сразу начинаешь падать, и при этом держать 'огонь', то получается примерно такая же картина. Пока летишь до земли, каждую секунду будет автоматически нажиматься 'огонь', и появится возможность взять/выложить предмет.
Связано это с тем, что изменение состояния клавиш управления Диззи происходит только когда Диззи стабилен (стоит прямо, идет вправо или влево, но при этом под ним твердая поверхность).
Казалось бы, что это верно. Однако, если в эту ситуацию попасть, когда клавиша 'огонь' уже нажата, то ее отпускание тоже не обновляется, потому что Диззи не стабилен. Поэтому шагнув на соседний экран, где можно сразу упасть, Диззи входит на экран с нажатым 'огнем', а войдя на этот экран уже нет под ногами твердой почвы, вот нажатая клавиша 'огонь' обратно и не отпускается. А то, что она срабатывает не постоянно, а через 1-2 секунды, это потому, что есть специальная задержка, чтобы после нажатия клавиши 'огонь' нельзя было ее нажать слишком быстро опять.
- - - Добавлено - - -
Дополнение:
Оказалось, что это связано в том числе с тем, что в движке сначала опрашивается клавиатура ориентируясь на предыдущее значение стабильности Диззи, а уже потом опрашивается эта самая стабильность для следующего кадра.
Однако, при переходе с экрана на экран, проверка стабильности не вызывается, и Диззи появляется на другом экране со статусом с предыдущим статусом стабильности. Именно из-за этого возможно шагнуть на другой экран не на твердую поверхность и падать вертикально вниз, а не наискосок, как было бы, если бы шагнули внутри одного экрана. Именно из-за этого же и можно вызвать инвентарь.
- - - Добавлено - - -
Решение проблемы:
При перерисовке экрана (переход на другой экран, или же изменение состояние активных обьектов - например, открыли колодец) делаются две вещи:
1. Сбрасываются все нажатые клавиши управления (не обязательно, но для пущей важности).
2. Устанавливается флаг однократного запрещения нажатия клавиши 'огонь'. Причем, нажатие других клавиш запрещать нельзя, иначе Диззи переходя из экрана в экран будет дергаться при входе на экран.




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