好的,这让我发疯了。我已经看了很多例子,似乎无法满足我的需求。我正在使用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));
谢谢!
答案 0 :(得分:0)
由于您的相机直视下方,听起来就像您想要的相机在本地空间中滚动一样。要滚动相机,必须将要传送的向上矢量旋转到CreateLookAt()
。像这样:
Vector3 newUp = Vector3.Transform(Vector3.UnitZ, Matrix.CreateRotationY(rotationAngle));
view = Matrix.CreateLookAt(cameraPosition, cameraTarget, newUp);