有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我可以在libGDX中使用透视摄影机渲染SpriteBatch吗?

我可以使用透视相机渲染我的精灵批吗

A我所有的精灵(那些加载了相同纹理的精灵)看起来都一样大,但我想把相机放在屏幕底部的某个高度,这样靠近屏幕顶部的精灵看起来就更小了。现在它看起来像左边的那个,但我希望它看起来像右边的:enter image description here


共 (1) 个答案

  1. # 1 楼答案

    是的,尽管您可能需要稍微调整/缩放坐标(您可以使用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 () {
        }
    }