gpt4 book ai didi

java - 如何正确设置相机?

转载 作者:行者123 更新时间:2023-12-02 04:32:19 25 4
gpt4 key购买 nike

在我的类上,我正在实现 ApplicationListener,因此在我的创建方法中,这就是我所做的:

public void create(){
camera=new Camera();
camera.setToOrtho(false,screenW,screenH);
}

//then on the render method:
public void render(){
camera.update();
}

但是当我使用 Gdx.input.getY() 时,结果相反,当我向上时,Y 坐标较小,当我向下时,它会变得更高。为了更好地理解:

enter image description here

最佳答案

看看相机类和 unproject 方法。这应该在屏幕坐标和世界坐标之间转换。 (可能是更有效的方法,但仅供说明):

float x = Gdx.input.getX();
float y = Gdx.input.getY();
float z = 0.0f;
Vector3 screenCoordinates = new Vector3(x, y, z);
Vector3 worldCoordinates = camera.unproject(screenCoordinates);

然后将世界坐标 vector 用于您需要的任何用途。

编辑:添加了小型工作示例和屏幕截图。我的屏幕截图没有捕获鼠标,因此没有捕获红色的“星星”。但当您在屏幕上移动鼠标时,这个简单的应用程序会以“初始”和“未投影”坐标显示 y 坐标。亲自尝试一下。我想这就是你的意思,不是吗?

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.math.Vector3;

public class SimpleInputCoords implements ApplicationListener {
private OrthographicCamera camera;

@Override
public void create() {
camera = new OrthographicCamera();
camera.setToOrtho(false, 800, 480);
}

@Override
public void render() {
int x = Gdx.input.getX();
int y = Gdx.input.getY();
int z = 0;
System.out.println("UnmodifiedYCoord:"+y);

Vector3 screenCoordinates = new Vector3(x, y, z);
Vector3 worldCoordinates = camera.unproject(screenCoordinates);
System.out.println("UnprojectedYCoord:"+worldCoordinates.y);
}

@Override
public void dispose() {
}

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

@Override
public void pause() {
}

@Override
public void resume() {
}

}

enter image description here

关于java - 如何正确设置相机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31296899/

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