android - libgdx vector3 转换错误

标签 android libgdx

大家晚上好

我正试图通过学习教程来熟悉 libdgx 和 android Here .除了在 Vector3 转换中倾斜时抓取屏幕坐标外,一切似乎都很好。

所以 101 的 x 输入被转换为 -796,968 的 y 输入被转换为 -429(触摸屏幕的左上角,模拟器的结果与我的手机的结果相同)。单击右下角时,动画会在屏幕中间触发。

这一切看起来都很基本,所以不太确定我的设置不正确以获得倾斜的转换。感谢您的帮助!

相机创建:

camera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
camera.position.set(camera.viewportWidth * .5f, camera.viewportHeight * .5f, 0f);

抓取触摸坐标:

public boolean touchDown(int screenX, int screenY, int pointer, int button) {
    touchCoordinateX = screenX;
    touchCoordinateY = screenY;
    stateTime = 0;
    explosionHappening = true;
    return true;
}

渲染循环:

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

    stateTime += Gdx.graphics.getDeltaTime();
    batch.begin();

    if (!explosionAnimation.isAnimationFinished(stateTime) && explosionHappening) {
        Vector3 touchPoint = new Vector3();
        touchPoint.set(touchCoordinateX,touchCoordinateY,0);
        TextureRegion currentFrame = explosionAnimation.getKeyFrame(stateTime, false);  // #16
        camera.unproject(touchPoint);
        batch.draw(currentFrame, touchPoint.x, touchPoint.y);
    }
            //  batch.draw(img, 0, 0);
    batch.end();
    if (explosionAnimation.isAnimationFinished(stateTime)){explosionHappening = false;}
}

最佳答案

我想你忘了为你的 SpriteBatch 设置相机投影矩阵。只需添加

batch.setProjectionMatrix(camera.combined);

之前

batch.begin();

关于android - libgdx vector3 转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28038001/

相关文章:

java - 通过单击和取消单击 libgdx java 渲染多行

android - 如何在 Jetpack Compose @Preview 中计算 WindowSizeClass

android - 为什么有时会抛出 FileNotFoundException

android - 如何将 SearchView 放入高度设置为 wrap_content 的 ToolBar 中而不消失?

android - 如何让 Eclipse 识别我的 Nexus 7?

java - 渲染方法中的 for 循环问题(Libgdx)

java - libgdx 中纹理的控制

安卓推送通知

java - Libgdx 如何让SFX淡出?

libgdx - 如何让 Sprite 支持不同的屏幕尺寸?