Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.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 Can';t集中动画(libGdx)_Java_Android_Animation_Sprite_Libgdx - Fatal编程技术网

Java Can';t集中动画(libGdx)

Java Can';t集中动画(libGdx),java,android,animation,sprite,libgdx,Java,Android,Animation,Sprite,Libgdx,我无法集中我的精灵动画,有人能给我一盏灯吗 public void render() { Gdx.gl.glClearColor(1, 1, 1, 1); Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); stateTime += Gdx.graphics.getDeltaTime(); currentFrame = walkAnimation.getKeyFrame(stateTi

我无法集中我的精灵动画,有人能给我一盏灯吗

public void render() {
    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

    stateTime += Gdx.graphics.getDeltaTime();                       
    currentFrame = walkAnimation.getKeyFrame(stateTime, true);      



    batch.setProjectionMatrix(cam.combined);
    batch.begin();
    batch.draw(currentFrame, Gdx.graphics.getWidth() / 2 - ((walkSheet.getWidth()/FRAME_COLS) / 2), Gdx.graphics.getHeight() / 2 - ((walkSheet.getHeight()/FRAME_ROWS) / 2), width / 2, height / 4);                          

我的动画正在向左绘制几个像素。

对于x位置,您有-

Gdx.graphics.getWidth() / 2 - ((walkSheet.getWidth()/FRAME_COLS) / 2)
如果每个动画图像都是100px宽,为什么不使用-

private static final float WALK_ANIM_WIDTH = 100f;
X位置将是-

Gdx.graphics.getWidth() / 2f - WALK_ANIM_WIDTH / 2f
更新

根据你的评论,你可以有-

public static final int SCREEN_WIDTH = 800;
public static final int SCREEN_HEIGHT = 520;

guiCam = new OrthographicCamera(SCREEN_WIDTH, SCREEN_HEIGHT);
guiCam.position.set(SCREEN_WIDTH / 2f, SCREEN_HEIGHT / 2f, 0);
现在,不用使用“Gdx.graphics.getWidth()”,只需使用屏幕宽度即可


看看libGDX中的SuperJumper演示。您将看到他们如何在游戏世界中使用视口。

对于x位置,您已经-

Gdx.graphics.getWidth() / 2 - ((walkSheet.getWidth()/FRAME_COLS) / 2)
如果每个动画图像都是100px宽,为什么不使用-

private static final float WALK_ANIM_WIDTH = 100f;
X位置将是-

Gdx.graphics.getWidth() / 2f - WALK_ANIM_WIDTH / 2f
更新

根据你的评论,你可以有-

public static final int SCREEN_WIDTH = 800;
public static final int SCREEN_HEIGHT = 520;

guiCam = new OrthographicCamera(SCREEN_WIDTH, SCREEN_HEIGHT);
guiCam.position.set(SCREEN_WIDTH / 2f, SCREEN_HEIGHT / 2f, 0);
现在,不用使用“Gdx.graphics.getWidth()”,只需使用屏幕宽度即可


看看libGDX中的SuperJumper演示。您将看到他们在游戏世界中如何使用视口。

看起来您正试图使用walkSheet.getWidth()/frame\u COLS计算当前帧的宽度……为什么不直接调用
currentFrame.getWidth()
?@damo谢谢您的回答,但它给了我同样的结果,当在桌面上运行时,动画会向右绘制,而在我的手机上运行时,动画会向左绘制,这可能不是我必须更改的代码片段?我还将确保您正确定义了
TextureRegion
s。
TextureRegion
可能在屏幕上居中,但精灵可能不在
TextureRegion
中居中。看起来您正试图使用
walkSheet.getWidth()/frame\u COLS
计算当前帧的宽度……为什么不直接调用
currentFrame.getWidth()
,但它只是给了我同样的结果,当在桌面上运行时,动画会向右画一点,当在我的手机上运行时,动画会向左画一点,也许这段代码不是我必须更改的?我还要确保您正确定义了
纹理区域。
TextureRegion
可能会在屏幕上居中,但精灵可能不会在
TextureRegion
中居中。谢谢,这有助于简化代码,但是,如果我想根据不同的分辨率调整动画大小,该怎么办?它还能用吗?我目前正在使用Gdx.graphics.getWidth/2、Gdx.graphics.getHeight/4使动画根据当前分辨率调整大小,这就是我认为使动画无法居中的原因。我如何解决这个问题?我希望我写的东西容易理解,因为英语不是我的母语language@IvanCarlos只要使用视口,它仍然可以工作。要测试它,您可以调整桌面应用程序的大小。:)看看libGDX中的SuperJumper演示。您将看到平截头体的宽度和高度以及它们的使用方式,这样即使您调整大小,所有内容也会相应缩放。非常感谢您的帮助。现在,当我重新缩放窗口时,动画也会调整大小,但它会离开中心,当我缩小屏幕时,它会根据屏幕大小变为左下角,而当我增大屏幕时,动画会变为右上角,如何使动画集中在相机上?使用batch.draw解决了这个问题(currentFrame,SCREEN_WIDTH/2f-WALK_ANIM_WIDTH/2f,SCREEN_HEIGHT/2f-WALK_ANIM_HEIGHT/2f);感谢帮助我开始更好地理解这个概念:)谢谢,这有助于我简化代码,但是,如果我想根据不同的分辨率调整动画大小,该怎么办?它还能用吗?我目前正在使用Gdx.graphics.getWidth/2、Gdx.graphics.getHeight/4使动画根据当前分辨率调整大小,这就是我认为使动画无法居中的原因。我如何解决这个问题?我希望我写的东西容易理解,因为英语不是我的母语language@IvanCarlos只要使用视口,它仍然可以工作。要测试它,您可以调整桌面应用程序的大小。:)看看libGDX中的SuperJumper演示。您将看到平截头体的宽度和高度以及它们的使用方式,这样即使您调整大小,所有内容也会相应缩放。非常感谢您的帮助。现在,当我重新缩放窗口时,动画也会调整大小,但它会离开中心,当我缩小屏幕时,它会根据屏幕大小变为左下角,而当我增大屏幕时,动画会变为右上角,如何使动画集中在相机上?使用batch.draw解决了这个问题(当前帧,屏幕宽度/2f-行走动画宽度/2f,屏幕高度/2f-行走动画高度/2f);感谢帮助我开始更好地理解这个概念:)