Форум программистов, компьютерный форум CyberForum.ru

Box2d - создание в теле более одной фигуры\сенсора - C++

Восстановить пароль Регистрация
 
Lynatik001
 Аватар для Lynatik001
34 / 28 / 2
Регистрация: 28.09.2012
Сообщений: 560
21.08.2014, 18:59     Box2d - создание в теле более одной фигуры\сенсора #1
Вот у меня есть персонаж - вот так он создается
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    player = lvl->GetObject("Naruto");
    b2BodyDef bodyDef;
    bodyDef.type = b2_dynamicBody;
    bodyDef.position.Set(player.rect.left, player.rect.top);
    bodyDef.fixedRotation = true;
    playerBody = world->CreateBody(&bodyDef);
    b2PolygonShape shape; shape.SetAsBox(player.rect.width / 2, player.rect.height / 2);
    b2FixtureDef fixtureDef;
    fixtureDef.shape = &shape;
    fixtureDef.density = 1.0f; fixtureDef.friction = 0.3f;
    playerBody->CreateFixture(&fixtureDef);
    plwidth = player.rect.width;
    plheight = player.rect.height;
как мне в этом теле создать еще 1 фигуру и розместить ее по локальным координатам.
Что-то в документации видел setLocalPosition, но его нет. Да и понятия не имею как еще 1 фигуру создать в теле, ли добавить еще 1 фикстуру, или еще полигон шейп добавить с фикстурой. Документация капец скудная. Сижу мучаюсь.
что бы понять и потом создать сенсор под фигурой для того что б смотреть ли нахожусь я на земле или в воздухе. Что б не мог прыгать пока в воздухе.

Добавлено через 12 часов 1 минуту
Актуально, забыл написать использую последнюю версию box2d

Добавлено через 4 часа 25 минут
Сам решил, Может кому интересно будет.
Нашел методом тыка, рыскал в методах смотрю о SetAsBox принимает еще 2 параметра во 2 варианте. И вижу что один из тех параметров b2Vec2 и понял что это координаты.
версия Box2D_v2.3.0
C++
1
2
3
4
5
6
7
    const b2Vec2 pos(0, player.rect.height/2);
    b2PolygonShape shape2; shape2.SetAsBox(player.rect.width/2, 3, pos,0);
    b2FixtureDef fixtureDef2;
    fixtureDef2.isSensor = true;
    fixtureDef2.shape = &shape2;
    fixtureDef2.density = 1.0f; fixtureDef2.friction = 0.3f;
    playerBody->CreateFixture(&fixtureDef2);
вот таким нехитрым образом добавляем еще одну фигуру(сенсор), убрав
C++
1
fixtureDef2.isSensor = true;
я прощитал что бы он располагался чутка ниже тела.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2014, 18:59     Box2d - создание в теле более одной фигуры\сенсора
Посмотрите здесь:

C++ Вводить название фигуры, выводить формулу для вычисления площади этой фигуры
C++ Cout - вывод не более 10 чисел в одной строке
Напечатать все пары городов, связанных между собой не напрямую, но не более чем с одной пересадкой C++
C++ Найти все числа из массива B (n), которые встречаются более чем в одной строке матрицы A (m, n)
Box2d как установить в проект? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
21.08.2014, 19:39     Box2d - создание в теле более одной фигуры\сенсора #2
Lynatik001, создавать вручную объекты Box2d тот еще геморрой. Лучше пользуйся редакторами тел, сам лично пользуюсь RUBE.
Lynatik001
 Аватар для Lynatik001
34 / 28 / 2
Регистрация: 28.09.2012
Сообщений: 560
21.08.2014, 20:05  [ТС]     Box2d - создание в теле более одной фигуры\сенсора #3
Цитата Сообщение от coloc Посмотреть сообщение
создавать вручную объекты Box2d тот еще геморрой. Лучше пользуйся редакторами тел, сам лично пользуюсь RUBE.
ок посмотрю что за вещь)

Добавлено через 12 минут
Цитата Сообщение от coloc Посмотреть сообщение
RUBE
только для JS?
для С++ он подойдет?
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
21.08.2014, 22:36     Box2d - создание в теле более одной фигуры\сенсора #4
Цитата Сообщение от Lynatik001 Посмотреть сообщение
для С++ он подойдет?
Да. Там есть пример loader-a для плюсов.
Yandex
Объявления
21.08.2014, 22:36     Box2d - создание в теле более одной фигуры\сенсора
Ответ Создать тему
Опции темы

Текущее время: 14:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru