libgdx在鼠标后旋转3d对象

时间:2017-06-14 15:36:10

标签: java libgdx

我在移动鼠标时尝试旋转3D实例。我使用正交相机,我在背景中有一个平铺的isomap。

[编辑]我使用此代码:

public boolean mouseMoved (int x, int y) {
    Vector3 direction = new Vector3();
    Vector3 worldCoordinate = cam.unproject(new Vector3(x, y, 0));

    direction = (worldCoordinate).sub(position).nor();
    direction.set(-direction.x, -direction.y, -direction.z);

    Matrix4 instanceRotation = instance.transform.cpy().mul(instance.transform);

    instanceRotation.setToLookAt(direction, new Vector3(0,-1,0));
    instanceRotation.rotate(0, 0, 1, 180);
    quat = new Quaternion();
    instanceRotation.getRotation(quat);

    instance.transform.set(position, quat);

    return false;
}

现在,实例跟随光标,但在所有轴上。我只想打开Y轴。我可以改变quat.x = 0和quat.z = 0来锁定旋转。之后,旋转仅适用于Y轴。但是,如果我的光标位于屏幕顶部,模型应该翻转,但无论光标位于何处,它都会保持面对。

我不知道如何转换坐标以告诉我的旋转它需要翻身。而以这种方式修改quat并不是很优雅

编辑:一些图片用于说明我想要的内容

在这里,光标位于屏幕底部,模型转向方向:Working

此处,模型不会翻转,就像光标位于屏幕底部一样:Not working

0 个答案:

没有答案