1

我正在使用 libgdx。我正在学习基础知识,所以我只是使用以下 PerspectiveCameras 显示一个框来显示一组轴和一个框:

environment = new Environment();

cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
cam.position.set(10f, 10f, 10f);
cam.lookAt(0, 0, 0);
cam.near = 0.1f;
cam.far = 300f;
cam.update();

zerocam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
zerocam.position.set(10f, 10f, 10f);
zerocam.lookAt(0, 0, 0);
zerocam.near = 0.1f;
zerocam.far = 300f;
zerocam.update();

使用以下方法,我可以在不旋转轴的情况下旋转盒子:

这是在我的 RendererClass 中:

modelBatch.begin(zerocam);
modelBatch.render(drawAxis(0), environment);
modelBatch.render(drawAxis(1), environment);
modelBatch.render(drawAxis(2), environment);
modelBatch.end();

modelBatch.begin(cam);
modelBatch.render(drawBox(), environment);
modelBatch.end();

cam.update();

这是在我的 ScreenClass 中:

Gdx.input.setInputProcessor(new CameraInputController(cam));

如您所见,它将旋转camPerspectiveCamera 而不是zerocamPerspectiveCamera,因此框会旋转但轴保持固定。问题是,如果我垂直拖动,使盒子放在一边,向左/向右拖动仍然会像时钟一样旋转,而不是旋转木马。希望这是有道理的。

如何使用以下方法public class ScreenClass implements Screen, InputProcessor正确旋转盒子。

touchDragged(int screenX, int screenY, int pointer)

基本上,当我向左或向右拖动时,无论凸轮实际发生什么,我都希望框向左/向右旋转。

我正朝着这个方向前进:调用from myrotateBox(int x, int y)来计算要旋转多少。RenderClassScreenClass

public void rotateBox(int x, int y) {
    Vector3 difVector = cam.position.sub(zerocam.position);

    cam.rotateAround(new Vector3(0f, 0f, 0f),
            difVector,
            1f);
}

这只是让我有所不同,camzerocam我觉得这是正确的方向。我想我只是以某种方式使用 x 和 y 值来计算旋转方向,然后以某种方式找出要应用于特定轴的浮点值。

谢谢

4

0 回答 0