- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想让一个按钮可点击,但它不起作用 - 似乎我需要使用 unproject()
但我不知道该怎么做。有问题的代码是:
Texture playButtonImage;
SpriteBatch batch;
ClickListener clickListener;
Rectangle playButtonRectangle;
Vector2 touchPos;
OrthographicCamera camera;
@Override
public void show() {
playButtonImage = new Texture(Gdx.files.internal("PlayButton.png"));
camera = new OrthographicCamera();
camera.setToOrtho(false, 800, 480);
batch = new SpriteBatch();
playButtonRectangle = new Rectangle();
playButtonRectangle.x = 400;
playButtonRectangle.y = 250;
playButtonRectangle.width = 128;
playButtonRectangle.height = 64;
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0.2f, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
camera.update();
batch.setProjectionMatrix(camera.combined);
batch.begin();
batch.draw(playButtonImage, playButtonRectangle.x, playButtonRectangle.y);
batch.end();
if (Gdx.input.isTouched()) {
Vector2 touchPos = new Vector2();
touchPos.set(Gdx.input.getX(), Gdx.input.getY());
if (playButtonRectangle.contains(touchPos)) {
batch.begin();
batch.draw(playButtonImage, 1, 1);
batch.end();
}
}
}
最佳答案
通常,您使用 camera.unproject(Vector)
将您的屏幕坐标从点击或触摸转换到您的游戏世界。这是必需的,因为原点不一定相同,并且使用相机还可以放大和缩小、四处移动、旋转等。 Unprojecting 将处理所有这些,并为您提供与指针位置匹配的游戏世界坐标。
在你的例子中它会是这样的:
Vector3 touchPos = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0);
camera.unproject(touchPos);
话虽如此,您实际上不应该手动执行此 UI 任务。 Libgdx 也有一些被称为 Stage
的 UI 功能(参见 this )。已经有很多小部件可用(参见 this )。他们使用皮肤(你可以从 here 得到一个基本的皮肤,你需要所有的 uiskin.* 文件)。它们自动将输入事件转发给所谓的 Actor
,例如一个按钮,您只需要实现对这些事件的处理。
关于java - 在 Java Libgdx 中正确使用 unProject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18554126/
我正在开发一个游戏,我需要将鼠标坐标转换为世界坐标。问题是我无法取消项目。当我单击原点时,它返回一个大约 (4,-61) 的值。值接近预期但不正确。可能是什么问题? 编辑: camera.positi
var fNearZ = -100.0; var farZ = 100.0; var fZoom = 10.0; var iR = this.iWidth/fZoom; var
首先,我在场景中投影一个特定点。 SCNVector3 topLeft = SCNVector3Make( -50, -50, -UIScreen.mainScreen.bou
我有许多光栅(位图)图像,我想将它们从未投影的经纬度转换为投影渲染。 (例如 GIF、PNG)。 我不明白如何使用 PROJ.4 渲染生成的图像。我想要一个可以自动完成这一切的图书馆或软件。 GRAS
我正在研究一些 SceneKit 概念,我试图在脑海中巩固的一个概念是 unprojectPoint。 我知道该函数将获取 2D 中的一个点并返回 3D 中的一个点(因此具有正确的 Z 值)。 当我阅
我有一个基本的 LibGDX 项目,我想在其中获取触摸位置,但 Android 设备提供的是屏幕坐标而不是虚拟游戏坐标,因此我使用camera.unproject() 来获取正确的坐标。我得到的结果是
我正在尝试使用 glm::unproject() 将我的 SDL 鼠标坐标转换为 x/z 平面上的世界位置 vector 。基本上我想弄清楚用户用鼠标点击了哪个“x/z”坐标。 来自 other st
我不确定如何使用 Unproject method由 GLM 提供。 具体来说,viewport是以什么格式传入的?为什么该函数不需要 View 矩阵以及投影和世界矩阵? 最佳答案 这里需要一点历史。
我目前正在开发 C++ 游戏引擎,我想在应用程序中构建鼠标交互。我以前通过光线拾取来完成此操作,但当时我使用了固定的鼠标位置,现在我想不用它了。我读到您可以使用 glm::unProject 函数来执
我有一个基本上只渲染一堆点的 OpenGL 程序。我需要从任意光标位置找到世界空间坐标,我这样做是这样的: glm::mat4 modelview = graphics.view*graphics.m
尽管文档中已说明,为什么我会收到 vector.unproject 的函数未定义错误? http://threejs.org/docs/#Reference/Math/Vector3 (最后一项) 如
我想让一个按钮可点击,但它不起作用 - 似乎我需要使用 unproject() 但我不知道该怎么做。有问题的代码是: Texture playButtonImage; SpriteBatch batc
我从 How can I transform the coordinates of a Shapefile? 开始. 那里的回应让我走上了 [我认为] 正确的轨道,但我仍然无法解决我的问题。 一个问题
我试图仅使用光标坐标来获取网格(z = 0)的坐标(x,y)。经过长时间的搜索,我发现使用 glm::unproject 可以实现这一点。 首先,我使用回调获取光标坐标: void cursorCal
问题陈述 我正在尝试将 2D 点重新投影到它们的原始 3D 坐标,假设我知道每个点的距离。关注OpenCV documentation ,我设法让它以零失真工作。然而,当存在扭曲时,结果是不正确的。
我正在使用 Leaflet 构建故事 map ,使用的是切片成图 block 的大图像而不是“真实世界” map 数据。我正在使用这个插件:https://commenthol.github.io/l
文档中甚至写道 Camera.unproject()另一方面,假设屏幕的原点位于左上角 Camera.project()假设屏幕的原点位于左下角。这太烦人了。这是故意的吗?难道我没有得到什么吗?
我是一名优秀的程序员,十分优秀!