Как создать землю (холмы), как iOS-игру «Contre Jour»? - PullRequest
3 голосов
/ 30 января 2012

Как создать землю (холмы), как в iOS-игре Contre Jour ? (С использованием Box2d и OpenGL)

Мои идеи:

Физика (Box2d)

  1. Я думаю, у нас есть множество тел или приспособлений.

  2. Когда мы коснемся экрана, определим местоположение касания.

  3. Если местоположение касания не далеко от земли, мы начинаем сканировать массив тел и ищем тело с координатами, ближайшими к месту касания.

  4. В случае касания Переместить, переместите правое тело к новой координате (body->SetTransform(...)).

Как вы думаете, эффективно ли использовать большое количество тел? И найти для нужного тела по координатам?

Графика (OpenGL)

Существует множество вершин и треугольников, созданных при рисовании земли (холмов)? Это правда?

enter image description here

1 Ответ

2 голосов
/ 01 февраля 2012

Вы можете использовать функцию b2World :: QueryAABB, чтобы получить список приборов в данной области, а затем проверить их для лучшего варианта. Тестовый стенд Box2D делает это, чтобы выяснить, какой прибор нужно захватить мышью, чтобы вы могли проверить этот исходный код. Смотрите также: http://www.iforce2d.net/b2dtut/world-querying

Для перемещения тела вы действительно можете использовать SetTransform, что было бы хорошо, если объекту не нужно взаимодействовать с чем-либо по пути. Другим вариантом может быть SetLinearVelocity со скоростью, которая будет перемещать тело в точку перетаскивания в один шаг времени. Это лучший метод, если вы хотите, чтобы объект постоянно сталкивался с предметами во время движения, потому что он не телепортирует тело мгновенно в положение пальца. Если тело представляет собой тело пули, то оно также не позволяет пользователю перетаскивать предметы через другие объекты, например статическую стену. Не забудьте установить скорость на ноль, когда палец поднят:)

...