当玩家直接向上或向下看时,LibGDX 3D Camera痉挛

时间:2016-04-14 23:27:34

标签: java 3d libgdx perspectivecamera

我的情况

我正在制作3D LibGDX游戏。我使用的是基于here的自定义相机控制器。当确定移动玩家的位置时,它会取消使用delta Y,这样无论是向上还是向下,它们都可以保持在同一水平。

我的问题

我的问题是,无论何时播放器看起来太远或太低,相机都会开始向外窥视。我相信它试图看起来既可以上升,也可以下行。我的问题是我不想那样做。在以前的项目中,我试图像这样设置一个限制:

if(camera.direction.y + deltaY >= 0.9){
    return;
}

(代码可能不完全正确),但是当发生这种情况时,玩家通常看不到足够的内容。

我的代码

我的代码here有一个链接。

1 个答案:

答案 0 :(得分:0)

我在Github的一位优秀研究员的帮助下修复了我的代码。这是我的新FirstPersonCameraController#touchDragged

float deltaX = -Gdx.input.getDeltaX() * degreesPerPixel;
float deltaY = -Gdx.input.getDeltaY() * degreesPerPixel;
camera.direction.rotate(camera.up, deltaX);
Vector3 oldPitchAxis = tmp.set(camera.direction).crs(camera.up).nor();
Vector3 newDirection = tmp2.set(camera.direction).rotate(tmp, deltaY);
Vector3 newPitchAxis = tmp3.set(tmp2).crs(camera.up);
if (!newPitchAxis.hasOppositeDirection(oldPitchAxis))
    camera.direction.set(newDirection);

(我删除了一些特定于我游戏的部分)