计算Ray和Scene2d UI平面的交点

时间:2018-11-10 10:15:04

标签: java android 3d libgdx game-development

我正在使用SpriteBatchprojection matrixPerspectiveCamera在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();
}

render1 render2

鼠标指针被隐藏并锁定在屏幕中央。触发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"); } 作为虚拟边界。

0 个答案:

没有答案