|
|
|||||
Постоянный контакт
Здравствуйте все! Давно юзаю box2D, сейчас на версии 2.1a.
В контакта разбираюсь, волнует вот какой вопрос: Почему при постоянном контакте beginContact срабатывает только раз в 10 - 20 апдейтов (одним словом - редко)? Трабла происходит при движении по поверхности с которой нужен контакт. Заранее спасибо |
|
|||||
Полагаю, что beginContact срабатывает только раз в 10 - 20 апдейтов, потому что контакт не разрывается, от этого не вызывается endContact, соответственно если не было endContact, то не будет и beginContact.
Если это не логично, то box2.1a это бета и могут быть глюки. Для себя сделал простое решение того, стоит ли персонаж на чем нибуть и может из-за этого прыгать, или он в воздухе и прыгать не может. //кусок платформера chPos = charaB2d.body.GetPosition().Copy(); chPos.y += charaB2d.height + 0.1; chPos.x -= charaB2d.width-0.1; myWorld.QueryPoint(floorCB, chPos); //конец куска платформера public function floorCB(fixture:b2Fixture):void { charaB2d.myUserData.floor = MyUserData.FLOOR_ON; //trace('контачит с полом '); }
__________________
Гоночка |
|
|||||
Последний раз редактировалось FieryWall; 09.05.2011 в 22:38. |
|
|||||
MyUserData этой мой пользовательский класс, который к бокс2д 2.1 имет отношение, только если считать, что я его экземпляр используею как userData объекта body персонажа, другими словами не имеет отношения к обсуждаемой теме, потом, просто если floor равен FLOOR_ON, то можно ходить влево или вправо, ну или прыгать пробельной клавишей.
__________________
Гоночка |
|
|||||
Цитата:
|
|
|||||
Цитата:
В общем хочу все для себя прояснить: chPos = charaB2d.body.GetPosition().Copy(); //chPos - это поинт; charaB2d - класс бодика chPos.y += charaB2d.height + 0.1; //Присваиваем поинту координаты чуть дальше правого... chPos.x -= charaB2d.width-0.1;//...нижнего угла нашего класса(мувика) myWorld.QueryPoint(floorCB, chPos);//QueryPoint сработает когда нижний правый угол //класса будет принадлежать(геометрически) любому объекту? public function floorCB(fixture:b2Fixture):void { charaB2d.myUserData.floor = MyUserData.FLOOR_ON;//Я так понял эо не обязательно trace('контачит с полоd.myUserData.floor = MyUserData.FLOOR_Oм ');//Если контачит } Добавлено через 2 часа 33 минуты Все, понял Мы просто узнаем принадлежит ли точка одному из объектов, очень удобная штука, если например нужно сравнивать высоту, СПАСИБО!!! Последний раз редактировалось FieryWall; 11.05.2011 в 22:59. |
Часовой пояс GMT +4, время: 23:48. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|