Показать сообщение отдельно
Старый 21.11.2011, 20:43
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 3  
Ответить с цитированием
goodguy
Banned

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
удерживать например клавишу влево он приклеится к левой стене и не падает.
Абсолютно логичное поведение. Бокс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) сделать только стены скользкими
Больше походит на костыли, чем на решение проблемы.