gpt4 book ai didi

java - libgdx - 将 Sprite 捕捉到光标

转载 作者:行者123 更新时间:2023-12-02 05:15:19 24 4
gpt4 key购买 nike

我目前正在尝试使用 libgdx 将十字线 Sprite 捕捉到我的游戏光标。游戏是自上而下的 View :

    Texture crosshair_text = new Texture(Gdx.files.internal("data/crosshair1.png"));
this.crosshair = new Sprite(crosshair_text, 0, 0, 429, 569);

//...
@Override
public void render() {

Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
cam.update();
batch.setProjectionMatrix(cam.combined);

batch.begin();

//.. sprites that scale based on camera (top-down view)

batch.end();

//draws 'ui' elements
floatingBatch.begin();

//...

//snap to cursor
this.crosshair.setPosition( Gdx.input.getX(), (Gdx.graphics.getHeight()-Gdx.input.getY()) );

//transform
this.crosshair.setScale(1/cam.zoom);

//draw
this.crosshair.draw(floatingBatch);

floatingBatch.end();
}

抱歉,如果有我没有发现的错误,这不是我的代码的精确副本。这里的问题是 1. Sprite 没有捕捉到正确的位置,2. 十字线 Sprite 滞后于鼠标在屏幕上的当前位置。谁能告诉我如何解决这两个问题中的任何一个?

最佳答案

您的位置可能不正确,因为屏幕位置不一定是使用 OrthographicCamera 进行绘制的正确位置,请先尝试使用 unproject。例如:

Vector3 mousePos = new Vector3( Gdx.input.getX(), (Gdx.graphics.getHeight()-Gdx.input.getY()), 0); //Get the mouse-x and y like in your code
cam.unproject(mousePos); //Unproject it to get the correct camera position
this.crosshair.setPosition(mousePos.x, mousePos.y); //Set the position

另外,您需要确保将 float 批处理设置为相机的投影矩阵,添加以下代码:

floatingBatch.setProjectionMatrix(cam.combined);

关于java - libgdx - 将 Sprite 捕捉到光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27006275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com