gpt4 book ai didi

c# - 第三人称相机的 y 轴未正确围绕玩家呈球形 - 逻辑问题?

转载 作者:行者123 更新时间:2023-11-30 12:16:31 24 4
gpt4 key购买 nike

我正在使用 Ox Engine 在 XNA 中制作 3D 游戏。文档很少,到目前为止我一直幸存下来,但现在我遇到了一个合乎逻辑的障碍很长一段时间,我认为是时候寻求外部帮助了。

所有移动和鼠标看起来 x 工作,相机正确跟随但是当我在 Y 轴上向上/向下移动鼠标以使相机在围绕角色的圆形“气泡”中移动时,它会导致其他一切都消失同步。角色应该被相机环绕,但也需要被告知角色面对的方向。我似乎不能两者兼得。

当我有代码告诉它角色的方向并“远离”(转置)它时,它正在移动轨道本身:



 if (changeY > 0)
{
如果 (camMemory.Y > 110)
tempMatrix *= Matrix.CreateFromAxisAngle(model.Orientation.Left, MathHelper.ToRadians(changeY));
}
否则如果(改变Y <0)
{
if (camMemory.Y < 400)//FAKE PLACEHOLDER VALUE...弧形的最高点在这里
tempMatrix *= Matrix.CreateFromAxisAngle(model.Orientation.Left, MathHelper.ToRadians(changeY));
}

Vector3 camPos = new Vector3(0, 0, 0) ;
camMemory = tempMatrix.Translation;

//注意:这是导致“气泡”移动的部分
moveAmount = tempMatrix.Forward * 200f;
/////
tempMatrix.Translation += moveAmount;
camPos = tempMatrix.Translation + model.Position;

//指针在前,相机在后,使相机面指针。



Engine.Camera.SetTransformByLookTarget(camPos, model.Orientation.Up, trackPos);

这意味着如果没有正确地围绕角色旋转,当他转动相机时,相机就会错位。

然而,当我解决这个问题时,我离角色的距离不够远,无法获得正确的视野,只是简单地乘以 tempMatrix.Translation 来“扩大”“气泡”,这让我很严重空间不足。我失去了顿悟。任何见解将不胜感激。

tl,dr:如何在不移动中心点的情况下使角色周围的轨道相机气泡更大(转置不起作用或者我使用错误!)

编辑:我希望我能为此悬赏,哈哈

最佳答案

The character should orbited by the camera, but it also needs to be told what direction the character is facing. I cannot seem to have both.

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

看来您的代码只是围绕模型的 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 发生变化(我假设这是关闭输入),相机将自行运行。

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

关于c# - 第三人称相机的 y 轴未正确围绕玩家呈球形 - 逻辑问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5239806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com