【发布时间】:2014-07-18 06:18:58
【问题描述】:
我正在创建一个 3D 游戏,但我不知道如何根据我的手指来平移相机。我正在创建一个地图(x = -30 到 +30;y = -30 到 30;z = -1 到 1),其中每个坐标都用于使用我资产中的 .g3db 文件的模型,并使用模型放置翻译。到目前为止,这很有效,地图看起来不错,并且可以 67% 的角度查看。地图太大了,无法立即在相机中查看(不,我不想缩小)。每当我触摸我的安卓手机屏幕时,它只是围绕中心旋转,但我希望游戏地图从我的角度保持在原位,而是改变透视相机在 x 和 y 轴上的位置。没有可用于位置跟踪的游戏对象,一切都应该取决于我的手指动作。通过这种方式,我想移动到每个 x 和 y 方向的可见屏幕(在视觉上想象它就像一个 2D 相机在图片前面向上、向下和向两侧移动)。你能帮帮我吗?
这是我目前的代码:
public class MyGdxGame extends ApplicationAdapter implements ApplicationListener{
//define variables
...
@Override
public void create() {
environment = new Environment();
environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f));
environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, -1f, -0.8f, -0.2f));
modelBatch = new ModelBatch();
cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
cam.position.set(10f, 10f, 10f);
cam.lookAt(0,0,0);
cam.near = 1f;
cam.far = 300f;
cam.update();
assets = new AssetManager();
//load assets
...
loading = true;
camController = new CameraInputController(cam);
camController.forwardTarget = true;
Gdx.input.setInputProcessor(camController);
}
private void doneLoading() {
//load models and add them to instances
loading = false
}
@Override
public void render() {
if (loading && assets.update())
doneLoading();
camController.update();
Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
modelBatch.begin(cam);
modelBatch.render(instances, environment);
modelBatch.end();
}
我使用 spring 工具套件 3.5.1 作为 IDE 和 libgdx 1.0.1
【问题讨论】:
标签: java android camera libgdx perspectivecamera