LibGDX 当玩家直接向上或向下看时 3D 相机痉挛
LibGDX 3D Camera spasm when player looks directly up or down
我的情况
我正在制作 3D LibGDX 游戏。我正在使用基于 here 之上的自定义相机控制器。在确定将玩家移动到哪里时,它取消了 delta Y 的使用,这样他们无论向上看还是向下看都可以保持在同一水平面上。
我的问题
我的问题是,每当玩家向上或向下看得太远时,相机就会开始失控。我相信它正试图向上或向下看。我的问题是我不想那样。在以前的项目中,我曾尝试像这样设置一个限制:
if(camera.direction.y + deltaY >= 0.9){
return;
}
(代码可能不完全正确),但当发生这种情况时,玩家通常看不够。
我的代码
我的代码 here 有一个 link。
在 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);
(我删除了几个特定于我的游戏的部分)
我的情况
我正在制作 3D LibGDX 游戏。我正在使用基于 here 之上的自定义相机控制器。在确定将玩家移动到哪里时,它取消了 delta Y 的使用,这样他们无论向上看还是向下看都可以保持在同一水平面上。
我的问题
我的问题是,每当玩家向上或向下看得太远时,相机就会开始失控。我相信它正试图向上或向下看。我的问题是我不想那样。在以前的项目中,我曾尝试像这样设置一个限制:
if(camera.direction.y + deltaY >= 0.9){
return;
}
(代码可能不完全正确),但当发生这种情况时,玩家通常看不够。
我的代码
我的代码 here 有一个 link。
在 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);
(我删除了几个特定于我的游戏的部分)