1

好吧,这快把我逼疯了。我已经浏览了大量示例,但似乎无法完全满足我的需求。我正在使用 XNA,我有一个顶点平面,我的相机在天空中俯视顶点。

我想要的是在 Y 轴上旋转相机,基本上得到与调整其 YAW 相同的结果。但是,每当我尝试绕 Y 轴旋转或调整其 YAW 时,实际上都没有发生任何事情。然而,我可以通过在世界上创建一个 Y 旋转矩阵来获得我想要的效果,但这感觉不是“正确”的做法,我希望相机本身旋转而不是世界。这是我所拥有的代码片段:

cameraPosition = Vector3.Transform(new Vector3(
cameraOffset.X - cameraOffset.X, 
zoomAmount, 
cameraOffset.Z - cameraOffset.Z), 
Matrix.CreateRotationY(rotationAngle)) + cameraOffset;

view = Matrix.CreateLookAt(cameraPosition, cameraTarget, new Vector3(0, 0, 1));

谢谢!

4

1 回答 1

0

由于您的相机正向下看,听起来您想要相机在本地空间中滚动。要滚动你的相机,你必须旋转你提供给CreateLookAt(). 像这样:

Vector3 newUp = Vector3.Transform(Vector3.UnitZ, Matrix.CreateRotationY(rotationAngle));
view = Matrix.CreateLookAt(cameraPosition, cameraTarget, newUp);
于 2013-06-12T00:43:51.670 回答