android - LIBGDX 相机不动

标签 android libgdx scene2d

我的游戏设置了这个屏幕,我看到了我创建的 Actor 。

但是谁能告诉我为什么相机似乎没有移动?当我按下向左键时,我希望 Actor 向右移动。

Gdx.input.isKeyPressed(Input.Keys.LEFT) 确实解析为 true 并且翻译函数确实被调用。

public class MainScreen implements Screen {

    private Stage mainStage;
    private Camera orthCamera;

    @Override
    public void show() {


        orthCamera = new OrthographicCamera();

        mainStage = new Stage(new ScreenViewport());
        mainStage.getViewport().setCamera(orthCamera);

        MyGameActorObject s = new MyGameActorObject();
        s.setPosition(100, 100);

        mainStage.addActor(s);
    }

    @Override
    public void render(float delta) {

        Gdx.gl.glClearColor(0,0,0,1); //sets clear
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        processKeyboardInput();

        mainStage.act(delta);
        mainStage.draw();
    }

    private void processKeyboardInput()
    {
        if (Gdx.input.isKeyPressed(Input.Keys.LEFT)) {
            orthCamera.translate(-30, 0, 0);
            orthCamera.update();
        }
    }

    @Override
    public void resize(int width, int height) {

    }

    @Override
    public void pause() {

    }

    @Override
    public void resume() {

    }

    @Override
    public void hide() {

    }

    @Override
    public void dispose() {
        mainStage.dispose();
    }
}

我正在努力实现能够使用键盘输入在 2d 游戏世界中平移。

这是自定义 Actor 对象的内容:

public class MyGameActorObject extends Actor
{
    @Override
    public void act(float delta) {
        super.act(delta);
    }

    @Override
    public void draw(Batch batch, float parentAlpha) {

        super.draw(batch, parentAlpha);

        ShapeRenderer r = new ShapeRenderer();

        r.begin(ShapeRenderer.ShapeType.Filled);
        r.setColor(Color.RED);
        r.circle(this.getX() - 50.0f, this.getY() - 50.0f, 100.0f);
        r.end();

    }
}

最佳答案

我相信我必须添加类似的东西

r.setProjectionMatrix(batch.getProjectionMatrix());

在我的自定义 actor 对象中。所以我的对象上的绘制函数现在是。

    @Override
    public void draw(Batch batch, float parentAlpha) {

        super.draw(batch, parentAlpha);

        ShapeRenderer r = new ShapeRenderer();

        r.setProjectionMatrix(batch.getProjectionMatrix());
        r.begin(ShapeRenderer.ShapeType.Filled);
        r.setColor(Color.RED);
        r.circle(this.getX() - 50.0f, this.getY() - 50.0f, 100.0f);
        r.end();

    }

关于android - LIBGDX 相机不动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32011063/

相关文章:

android - Libgdx 上的 Facebook 集成

android - libgdx 背景图片更改

java - 使用 LibGDX.scene2d 中的输入进行错误条件检查

java - 尝试在 Android Studio 上使用 Room

android - layout-land 不选择横向布局 xml

java - 使用 AssetsManager 在 Java libgdx 上出错

android - 将 Fabric 与 Libgdx 集成

android - 如何在android gridview上进行 ImageView 拖放

android - view.getLayoutParams().width 不适用于牛轧糖

java - Libgdx stage2d 和另一个用于 HUD 的摄像头,如何处理坐标?