我正在使用 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));
如您所见,它将旋转cam
PerspectiveCamera 而不是zerocam
PerspectiveCamera,因此框会旋转但轴保持固定。问题是,如果我垂直拖动,使盒子放在一边,向左/向右拖动仍然会像时钟一样旋转,而不是旋转木马。希望这是有道理的。
如何使用以下方法public class ScreenClass implements Screen, InputProcessor
正确旋转盒子。
touchDragged(int screenX, int screenY, int pointer)
基本上,当我向左或向右拖动时,无论凸轮实际发生什么,我都希望框向左/向右旋转。
我正朝着这个方向前进:调用from myrotateBox(int x, int y)
来计算要旋转多少。RenderClass
ScreenClass
public void rotateBox(int x, int y) {
Vector3 difVector = cam.position.sub(zerocam.position);
cam.rotateAround(new Vector3(0f, 0f, 0f),
difVector,
1f);
}
这只是让我有所不同,cam
但zerocam
我觉得这是正确的方向。我想我只是以某种方式使用 x 和 y 值来计算旋转方向,然后以某种方式找出要应用于特定轴的浮点值。
谢谢