我这里有一些 C# 代码,它可以围绕玩家旋转相机
BasePosition 是用于计算的相机位置,CoreCamera 是相机,The Anchor 是锚点
CoreCamera.Position.X = (float)(Math.Cos(Theta) * (BasePosition.X - Anchor.X) - Math.Sin(Theta) * (BasePosition.Z - Anchor.Z) + Anchor.X);
CoreCamera.Position.Z = (float)(Math.Sin(Theta) * (BasePosition.X - Anchor.X) + Math.Cos(Theta) * (BasePosition.Z - Anchor.Z) + Anchor.Z);
CoreCamera.Position.Z = (float)(Math.Cos(Phi) * (BasePosition.Z - Anchor.Z) - Math.Sin(Phi) * (BasePosition.Y - Anchor.Y) + Anchor.Z);
CoreCamera.Position.Y = (float)(Math.Sin(Phi) * (BasePosition.Z - Anchor.Z) + Math.Cos(Phi) * (BasePosition.Y - Anchor.Y) + Anchor.Y);
旋转是独立工作的,所以数学不是问题,主要是当我同时进行 x 和 y 旋转时
它似乎只是执行我指定的最后一个旋转,而不是两者都旋转,我的主要目标是沿两个轴旋转相机
我该如何实现这一目标?
我尝试寻找解决方案,但他们正在使用使用旋转矩阵的代码,而我没有使用它。我宁愿修复这段代码,也不愿编写全新的代码
请帮忙,而不是否决
这是一个简单的编程问题。
注意价值观的来源。您的两次旋转都使用
BasePosition
。
第二个应该使用
CoreCamera.Position
。