Да, хотя вам, вероятно, нужно немного скорректировать/масштабировать координаты (вы можете использовать spriteBatch.setTransformMatrix сделать это за один звонок). Вот небольшой пример:
public class SpriteBatch3DTest extends GdxTest {
PerspectiveCamera cam;
CameraInputController camController;
SpriteBatch spriteBatch;
Texture texture;
@Override
public void create() {
cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
cam.position.set(0f, 8f, 8f);
cam.lookAt(0,0,0);
cam.near = 0.1f;
cam.far = 300f;
cam.update();
spriteBatch = new SpriteBatch();
camController = new CameraInputController(cam);
Gdx.input.setInputProcessor(camController);
texture = new Texture(Gdx.files.internal("data/badlogic.jpg"));
}
@Override
public void render() {
camController.update();
spriteBatch.setProjectionMatrix(cam.combined);
Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
spriteBatch.begin();
spriteBatch.draw(texture, -5f, -5f, 10f, 10f);
spriteBatch.end();
}
@Override
public void dispose() {
spriteBatch.dispose();
texture.dispose();
}
public boolean needsGL20() {
return true;
}
public void resume() {
}
public void resize (int width, int height) {
}
public void pause() {
}
}
спасибо, что работает отлично. Но мои круговые спрайты выглядели гладкими, теперь они выглядят зубчатыми по окружности? Также появился мой тачпад, который я использовал здесь http://www.bigerstaff.com/libgdx-touchpad-example/, но я не могу его использовать, я имею в виду, что ручка не двигается, и поэтому я не получаю от него никакого ввода –
почему эта камера перспективы не изменяет тачпад, который является актером на сцене? Я использую тот же SpriteBatch для обычного объекта и touchapd, но только обычные объекты выглядят так, как я хочу –
По умолчанию этап использует OthographicCamera, вы можете изменить камеру с помощью stage.setCamera (...) ;. Кроме того, на сцене используется метод camera.unproject для перевода экрана в координаты сцены, в котором он принимает z = 0. Это может не сработать для вас, поэтому вы, вероятно, захотите расширить Stage и переопределить screenToStageCoordinates. Чтобы получить лучший (плавный) рендер, попробуйте изменить minFilter/magFilter вашей текстуры. Я считаю, что это Nearest по умолчанию, попробуйте установить его на Linear. Tl; dr Stage не предназначен для использования с PerspectiveCamera, я бы не рекомендовал его. – Xoppa