我正在使用SpriteBatch
,projection matrix
和PerspectiveCamera
在3D世界中渲染Scene2d UI表格
public void render (float delta) {
spriteBatch.setProjectionMatrix(projectionMatrix.set(camera.combined).mul(transform));
spriteBatch.begin();
rootTable.draw(spriteBatch, 1.0f);
spriteBatch.end();
}
鼠标指针被隐藏并锁定在屏幕中央。触发touchUp事件时,如果鼠标位于表格的边界框内,我想计算鼠标在表格内实际单击的位置Vector2
,因此我可以称呼{{ 1}}函数来获取点击的Table.hit
。这也是在3D世界上绘制2D菜单的正确方法。
我正在使用此代码进行射线相交测试。
Actor
Scene2d坐标从左下角开始,在3D中,它们从中心开始。我使用Ray ray = camera.getPickRay(screenX, screenY);
int result = -1;
float distance = -1;
transform.getTranslation(position);
if (Intersector.intersectRayBoundsFast(ray, position, new Vector3(40, 40, 20) )) {
Gdx.app.log("RAY", "Table Clicked");
}
作为虚拟边界。