Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android LibGDX设置投影矩阵组合会导致精灵垂直翻转_Java_Android_Libgdx - Fatal编程技术网

Java Android LibGDX设置投影矩阵组合会导致精灵垂直翻转

Java Android LibGDX设置投影矩阵组合会导致精灵垂直翻转,java,android,libgdx,Java,Android,Libgdx,我已将camera.setToOrth设置为我的宽度和高度。每当我运行该渲染方法时,我的气球精灵基本上是垂直旋转的,看起来像是翻转了180度,像是图像保存为一个站立的气球,绘制时看起来像是旋转了,所以我必须旋转屏幕才能看到它 我之所以使用setProjectionMatrix,是因为我假设android肖像模式下屏幕(0,0)的默认位置是右上角,而在libGDX上,屏幕自动位于左下角,所以基本上设置为修复libGDX,但手机的默认位置不变,我希望它能改变&和libGDX的一样,因为我需要处理屏幕

我已将camera.setToOrth设置为我的宽度和高度。每当我运行该渲染方法时,我的气球精灵基本上是垂直旋转的,看起来像是翻转了180度,像是图像保存为一个站立的气球,绘制时看起来像是旋转了,所以我必须旋转屏幕才能看到它

我之所以使用setProjectionMatrix,是因为我假设android肖像模式下屏幕(0,0)的默认位置是右上角,而在libGDX上,屏幕自动位于左下角,所以基本上设置为修复libGDX,但手机的默认位置不变,我希望它能改变&和libGDX的一样,因为我需要处理屏幕触摸,并获得正确的位置

所以基本上setProjectionMatrix&setToOrtho(true…)完成了它的工作,但唯一的问题是它只是将图像旋转180度


有人知道它为什么这样做吗?

在Android的视图系统中,(0,0)位于左上角,Y指向下方。在libgdx中,如果在
setToOrtho
中使用
false
,则Y向上,并且(0,0)位于左下角。如果您根本不更改精灵批处理的投影矩阵,(0,0)是屏幕的中心,您将有一个变形的纵横比。您的单个精灵是横向绘制的,但在屏幕上的正确位置,还是整个场景是横向绘制的?无论您在
设置中选择的方向是什么,都不重要。您可以使用
camera.unproject()
将屏幕坐标转换为场景坐标中的一个点,而不管摄影机是如何设置的。如果使用
setToOrTo(true,…)
,我想您在加载精灵时也要使用
flipY
   public void render() {
        this.spriteRenderer.setProjectionMatrix(this.instance.camera.combined);
        this.spriteRenderer.begin();
        if (!this.ballon.isPoping()) {
            Sprite s = this.ballon.getSprite();
            spriteRenderer.draw(s, 50, 50, s.getWidth(), s.getHeight());
        }
//      else {
//          if (!this.ballon.isPoped()) {
//              Sprite s = this.ballon.getCurrentAnimation();
//              this.spriteRenderer.draw(s, this.ballon.getX(),
//                      this.ballon.getY(),
//                      this.ballon.getSprite().getWidth() * SpriteConfiguration.BALLON_SCALE,
//                      this.ballon.getSprite().getHeight() * SpriteConfiguration.BALLON_SCALE);                
//              this.ballon.processAnimation();
//          }
//      }
        this.spriteRenderer.end();
    }