Цитата:
|
удерживать например клавишу влево он приклеится к левой стене и не падает.
|
Абсолютно логичное поведение. Бокс2д - это физический движок. Если прижать кирпич рукой к стене и давить на него с постоянной силой, он упадет? Не?
Нужно просто создать слушатель столкновений и при ударе о стену убирать нажатие клавиши, чтобы оно не становилось активным до следующего нажатия.
Что-то типа:

Код AS3:
var aFixture:b2Fixture = contact.GetFixtureA();
var bFixture:b2Fixture = contact.GetFixtureB();
var userData1:* = aFixture.getBody().getUserData();
var userData2:* = bFixture.getBody().getUserData();
if ((userData1 is Wall && userData2 is Character) ||
(userData2 is Wall && userData1 is Character) {
arrowKeyPressed = false;
}
Это будет чем-то вроде временного ослабления давления на тело, что позволит движку сэмулировать падение.
Цитата:
1) приделать персонажу колесо и двигать его влево-право вращением колеса, заодно пропадёт и управление в полёте
2) сделать только стены скользкими
|
Больше походит на костыли, чем на решение проблемы.