我有原点和方向矢量,但我不知道如何跟随光线并检查碰撞......
这是射线的图片,它会发出大约 6 个方块。
Vector3f cam = camera.getPosition();
Vector3f dir = getDirection();
dir.x *= 40;
dir.y *= 40;
dir.z *= 40;
Vector3f dest = new Vector3f(cam.x + dir.x, cam.y + dir.y, cam.z + dir.z);
public Vector3f getDirection()
{
Vector3f vector = new Vector3f();
float rotX = camera.yaw;
float rotY = camera.pitch;
vector.y = (float) -Math.sin(Math.toRadians(rotY));
float h = (float) Math.cos(Math.toRadians(rotY));
vector.x = (float) (h * Math.sin(Math.toRadians(rotX)));
vector.z = (float) (-h * Math.cos(Math.toRadians(rotX)));
return vector;
}
我尝试过使用 gluUnProject 并且它工作了一点,但是就像当你选择一个块的面时它不是很精确。
顺便说一句:我正在使用块的显示列表,我只是在该显示列表中渲染块四边形。我得到 60 FPS。我一直在搜索和搜索,但在光线追踪和/或光线拾取方面找不到任何东西......谢谢!