XNA相机旋转/鸟瞰视图

时间:2013-06-11 15:53:24

标签: xna camera overhead

好的,这让我发疯了。我已经看了很多例子,似乎无法满足我的需求。我正在使用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));

谢谢!

1 个答案:

答案 0 :(得分:0)

由于您的相机直视下方,听起来就像您想要的相机在本地空间中滚动一样。要滚动相机,必须将要传送的向上矢量旋转到CreateLookAt()。像这样:

Vector3 newUp = Vector3.Transform(Vector3.UnitZ, Matrix.CreateRotationY(rotationAngle));
view = Matrix.CreateLookAt(cameraPosition, cameraTarget, newUp);