Предположим, есть объект А, который
персонаж и объект B, который
это земля
Предположим, персонаж может ходить только
когда он касается земли.
Предполагая, что ваш объект A b2Body называется objectA и
objectB - это другая b2Body, называемая objectB, а ваш мир называется m_world. Если объектB
это земля, я думаю, она имеет плотность 0, что делает его статичным.
Если вы хотите проверить, находится ли объект A над объектом B, у вас есть два варианта, либо через сами тела, что означает использование единиц измерения box2d (1 метр = 30 пикселей),
либо используя ссылку на ваши пользовательские клипы, установленные через свойство userData.
Преимущество использования второго, я полагаю, заключается в том, что вы будете использовать обычные пиксельные единицы, имея в виду, что ваша точка регистрации находится в центре не в 0,0.
Итак, в вашем цикле обновления (где вы вызываете m_world.Step) у вас будет что-то вроде:
if((objectA.m_userData.y + objectA.m_userData.height*.5) < (objectB.m_userData.y-objectB.m_userData.height*.5)) trace('objectA is above ground');
else trace('objectB is on the ground');
Просто прочитайте ваш комментарий и обновите снова.
Я начал писать команду jsfl для flash, которая получает x, y, width, height от элементов на сцене и генерирует код box2d. Я использовал это, чтобы сделать эту простую игру:
http://www.disturbmedia.com/games/breakfast
Кажется, мне не нужно изобретать велосипед, потому что кто-то уже сделал что-то довольно последовательное. Только что вернулся из LFPUG, где Карлос Уллоа также немного рассказал о box2d и указал на эту вещь:
http://www.sideroller.com/wck/
Кажется, он генерирует координатные массивы для более сложных определений форм, что вам и нужно. В некотором смысле это не полный ответ на ваш конкретный вопрос, но это шаг вперед.
Из вашего описания игра звучит действительно интересно. Держите нас в курсе:)