我正在使用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)
基本上当我向左或向右拖动时,无论凸轮实际发生什么,我都希望盒子左/右旋转。
我正朝着这个方向前进:从我的rotateBox(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值来计算旋转的方向,然后以某种方式计算出应用于特定轴的浮点值。
由于