camera - 如何在 LibGDX 中让相机跟随玩家

标签 camera libgdx render game-development

我一直在关注“如何制作2D游戏”here ,但没有显示如何让相机跟随特定的 Sprite 。

我的渲染代码如下

public class [ClassName] {
    polkymain game; 
    OrthographicCamera camera;

    public static int PolkyX;
    public static int PolkyY;

    SpriteBatch batch;

    public GameScreen(polkymain game) {
        this.game = game;
    
        camera = new OrthographicCamera();
        camera.setToOrtho(true, 1280, 1240);
    
        batch = new SpriteBatch();
    
        PolkyX = 0;
        PolkyY = 0;     
    }

    @Override
    public void render(float delta) {
        Gdx.gl.glClearColor(0.95F, 0.95F, 0.95F, 0.95F);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);       
    
        camera.update();
        generalUpdate();
    
        batch.setProjectionMatrix(camera.combined);     
        batch.begin();          
        batch.draw(Assets.Sprite_Mario_main, PolkyX, PolkyY);       
        batch.end();
    }

    public void generalUpdate(){
        if(Gdx.input.isKeyPressed(Keys.D) || (Gdx.input.isKeyPressed(Keys.LEFT))
        {
            PolkyX += 5;
        }
    
        if(Gdx.input.isKeyPressed(keys.A) || (Gdx.input.isKeyPressd(Keys.RIGHT))
        {
            PolkyX -= 5;
        }

        if(Gdx.input.isKeyPressed(keys.S) || (Gdx.input.isKeyPressd(Keys.DOWN))
        {
            PolkyY -= 5;
        }

        if(Gdx.input.isKeyPressed(keys.W) || (Gdx.input.isKeyPressd(Keys.UP))
        {
            PolkyY += 5;
        }       
    }

    @Override
    public void resize(int width, int height) { /* TODO */ }

    @Override
    public void show() {  /* TODO */ }

    @Override
    public void hide() { /* TODO */ }

    @Override
    public void pause() { /* TODO */ }

    @Override
    public void resume() { /* TODO */ }

    @Override
    public void dispose() { /* TODO */ }
}

另外,我有一个“ Assets ”类,其中包含我所有的纹理和 Sprite 编码,不知道这是否相关。现在想来我不这么认为。

最佳答案

让相机跟随的最简单方法是在每次渲染调用时将其位置设置为 Sprite 的中心,如下所示:

//move your sprite
camera.position.set(sprite.getX(), sprite.getY(), 0);
camera.update();
//draw everything

这将使相机每次迭代都与 Sprite 的位置完全匹配。如果您想要一些更平滑/更复杂的跟随,您应该研究某种形式的插值(更多信息可以找到 here )。

关于camera - 如何在 LibGDX 中让相机跟随玩家,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24534159/

相关文章:

java - Libgdx:如何将控件与可移动对象分开?

javascript - 如何基于节点模块从 JavaScript 文件创建构建?

c# - 对 Razor 渲染脚本的引用

android - 如何使用OpenGLES 2.0在libgdx中的背景上实时渲染Android的YUV-NV21摄像机图像?

Android 前置摄像头拍摄倒置照片

java - 在 Libgdx 中嵌入浏览器

android - 使用AdMob打开Android应用时崩溃

html - 如何使用 blackfriday 将 markdown 渲染到 golang 模板(html 或 tmpl)?

ios - 在 iOS 4.3 中将 YpCbCr iPhone 4 相机帧渲染为 OpenGL ES 2.0 纹理

android - 如何在 Android 设备中获取相机传感器尺寸?