【问题标题】:libgdx reset OrthographicCamera positionlibgdx 重置 OrthographicCamera 位置
【发布时间】:2019-05-26 16:22:54
【问题描述】:

我在 Java 应用程序中重置相机位置时遇到问题。 这是一款横向卷轴游戏,其中相机聚焦(缩放)在屏幕的一部分上..

在一个类 (UI) 中,相机具有以下设置:

OrthographicCamera camera = new OrthographicCamera();
camera.setToOrtho(false, FlappyWizardGame.WIDTH / 2,FlappyWizardGame.HEIGHT / 2);

在 update() 方法中,相机应该跟随移动的图形:

camera.position.x = wizard.getPosition().x + 80;

在 render() 方法中:

spriteBatch.setProjectionMatrix(camera.combined);

现在我的问题是,当玩家输了时,应该会弹出另一个 UI。但是由于相机的缩放,背景(纹理)显示不正确..

希望您能理解我的意思,并感谢您的帮助!

亲切的问候!

编辑: 看来问题出在 SpriteBatch 上,因为它设置为“Camera.combined”。有什么办法可以重置吗?

【问题讨论】:

  • 不要为游戏和 UI 使用同一个相机。
  • 两个 UI 都扩展了一个实现摄像头的抽象类你的意思是在每个类中分别实现摄像头吗?
  • sb.setProjectionMatrix(gameCamera.combined); sb.begin(); //draw stuff sb.setProjectionMatrix(uiCamera.combined); //draw stuff sb.end();

标签: java libgdx 2d-games


【解决方案1】:

偏移背景纹理以在wizard.getPosition().x 处绘制 - 偏移量。其中 offset 是向导的原点(左上角)到屏幕左侧的距离。

【讨论】:

  • 我不确定我是否理解您的确切意思。请您好心向我解释一下您的想法好吗?
【解决方案2】:

所以解决方案是像这样重新定位相机:

camera.setToOrtho(false, FlappyWizardGame.WIDTH, FlappyWizardGame.HEIGHT);

并在 render 方法中像这样重置 SpriteBatch:

sb.setProjectionMatrix(camera.combined);

感谢您的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多