我正在使用Ox Engine在XNA中制作3D游戏。很少有文档,到目前为止我还活着,但是现在我已经遇到了很长一段路要走很长一段路,而且我认为是时候寻求外部帮助了。

所有动作和鼠标外观x均起作用,并且相机正常运行,但是,当我在Y轴上向上/向下移动鼠标以使相机围绕其字符沿其圆圈“气泡”移动时,会导致其他所有内容不同步。角色应该由摄像机绕行,但是还需要告知角色面对的方向。我似乎无法两者兼得。

当我有代码告诉角色的方向并将其“移开”(移调)时,它就在移动轨道本身:

ojit_pre

这意味着当角色转动时,如果角色转动方向不正确,相机就不适合了。

但是,当我解决这个问题时,我离角色的距离还不够远,因此无法正确看待图像,只是简单地乘以tempMatrix.Translation以``扩大''``气泡''会导致我严重失落。我失去了顿悟。任何见解将不胜感激。

tl,dr:如何在不移动中心点的情况下使围绕角色的环绕摄影机气泡变大(移调不起作用或我使用的方式不正确!)

编辑:我希望我可以对此赏金,大声笑

最佳答案

角色应绕
  相机,但也需要告知
  角色是什么方向
  面对。我似乎无法两者兼得。


两者兼有的方法是根据角色矩阵基向量的偏移量设置摄像机位置。这样,当角色旋转并更改基本矢量时,相机将跟随它。同时或独立地,更改偏移值将使您的相机也围绕角色旋转。

看来您的代码仅绕模型的X轴旋转。为了演示有关该轴的方法,您可以执行以下操作:

Vector3 offset = Vector3.Transform(model.Orientation.Backward, Matrix.CreateFromAxisAngle(model.Orientation.Left, camMemory.Y));

camPos = model.Position + (offset * bubbleSize);


因此,现在,如果角色自己旋转,则摄影机将跟随,因为model.Orientation.Backward会发生变化。而且,如果camMemory.Y发生变化(我假设这是从输入中键入的),则相机将自行旋转。

注意缩放偏移向量如何影响“气泡”的大小。

10-01 01:54