klieve
@klieve
код, рисование, игры

LibGDX для android. Как перевести координаты спрайта в координаты текстуры?

Мне надо понять логику систем координат. У меня есть объекты-машинки. Я вывожу их на экран как СПРАЙТЫ. Иначе нельзя, потому что только спрайты можно поворачивать. Поле (стадион) я рисую как текстуру (то есть НЕ КАК СПРАЙТ). Иначе нельзя потому что только текстуры можно прокручивать по экрану (спрайты не умеют прокручиваться). Так вот, выяснилось, что текстуры и спрайты выводятся в разных координатах! Как перевести координаты спрайта в координаты текстуры?

//Координаты экрана
m_screenRectangle.set(0, 0, m_camera.viewportWidth, m_camera.viewportHeight);

//Загружаю текстуру стадиона из файла
m_roadTexture = new Texture(Gdx.files.internal("road_map.png"));

// Создаю регион
m_myRoadTexture = new TextureRegion(
m_roadTexture,
(int)m_roadRectangle.x, (int)m_roadRectangle.y,
(int)m_roadRectangle.width, (int)m_roadRectangle.height
)

//Устанавливаю окно просмотра стадиона
m_myRoadTexture.setRegion(
(int)m_roadRectangle.x, (int)m_roadRectangle.y,
(int)m_roadRectangle.width, (int)m_roadRectangle.height
)

//Вывожу на экран текстуру стадиона

batch.draw(m_myRoadTexture, m_screenRectangle.x, m_screenRectangle.y, m_screenRectangle.width, m_screenRectangle.height);

//ТЕПЕРЬ ХОЧУ НАРИСОВАТЬ НА ПОВЕРХНОСТИ СТАДИОНА МОЙ СПРАЙТ

//Подготавливаю мой спрайт для отображения:
MY_SPRITE.setBounds(MY_SPRITE_x, MY_SPRITE_y, MY_SPRITE_width, MY_SPRITE_height);
MY_SPRITE.setOriginCenter();
//Отображаю на поверхности стадиона отобразить спрайт
MY_SPRITE.draw(batch);

В результете вижу:
СПРАЙТ отобразился на поверхности стадиона, но НЕ В ТОМ МЕСТЕ, где надо!
При этом, на разных устройствах, позиция спрайта разная!

ВОПРОС: Что я не так делаю?
  • Вопрос задан
  • 2685 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы