Я создаю простую игру OpenGL C++. У меня есть главный герой (зеленый прямоугольник) и несколько статических объектов (красные прямоугольники), расположенные в виде лестницы.
Проблема в том, что при опускании зеленого прямоугольника он перекрывается с краями красных прямоугольников.

С Unity все по-другому. Если персонаж сталкивается, он вращается, создавая более естественное ощущение.

Character.cpp (динамический объект)
m_Position = glm::vec2(800.0f, 800.0f); m_Rotation = 45.0f; m_Scale = 50,0f; b2BodyDef защита; def.type = b2_dynamicBody; def.position.Set(Util::PixelToMeter(m_Position.x), Util::PixelToMeter(m_Position.y)); m_Body = m_PhysicsWorld.CreateBody(&def); форма b2PolygonShape; shape.SetAsBox(Util::PixelToMeter(m_Scale/2.0f), Util::PixelToMeter(m_Scale/2.0f)); b2Fixture* fixture = m_Body->CreateFixture(&shape, 1.0f); приспособление->SetFriction(0.3f); А затем на onRender:
const auto& newPosition = m_Body->GetPosition(); m_Position.x = Util::MeterToPixel(newPosition.x); m_Position.y = Util::MeterToPixel(newPosition.y); m_Rotation = m_Body->GetAngle(); Wall.cpp (статический объект)
m_Position = glm::vec2(position.x,position.y); m_Rotation = 0,0f; m_Scale = 50,0f; b2BodyDef защита; def.type = b2_staticBody; def.position.Set(Util::PixelToMeter(m_Position.x), Util::PixelToMeter(m_Position.y)); m_Body = m_PhysicsWorld.CreateBody(&def); форма b2PolygonShape; shape.SetAsBox(Util::PixelToMeter(m_Scale/2.0f), Util::PixelToMeter(m_Scale/2.0f)); m_Body->CreateFixture(&shape, 0.0f); Это мой репозиторий: https://github.com/axelthat/OpenGLBox2D
Что я делаю не так?
Мобильная версия