【问题标题】:3rd person camera's y axis not properly spherical around player - Logic problem?第三人称相机的 y 轴未正确围绕玩家旋转 - 逻辑问题?
【发布时间】:2011-03-08 23:52:34
【问题描述】:

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

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

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

        if (changeY > 0)
        {
            if (camMemory.Y > 110)
                tempMatrix *= Matrix.CreateFromAxisAngle(model.Orientation.Left, MathHelper.ToRadians(changeY));
        }
        else if (changeY < 0)
        {
            if (camMemory.Y < 400)//FAKE PLACEHOLDER VALUE... highest point in arc goes here
                tempMatrix *= Matrix.CreateFromAxisAngle(model.Orientation.Left, MathHelper.ToRadians(changeY));       
        }

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

        //NOTE: this is the piece that causes the "bubble" to move
        moveAmount = tempMatrix.Forward * 200f;
        /////
        tempMatrix.Translation += moveAmount;
        camPos = tempMatrix.Translation + model.Position;

        //Pointer in front, Camera behind, make camera face pointer.



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

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

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

tl,dr:如何在不移动中心点的情况下使围绕角色的环绕摄像机气泡变大(转置不起作用或我使用错误!)

编辑:我希望我能在这上面放一个赏金,哈哈

【问题讨论】:

    标签: c# 3d matrix xna camera


    【解决方案1】:

    角色应该被环绕 相机,但也需要告诉 角色是什么方向 面对。我似乎不能两者兼得。

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

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

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

    【讨论】:

    • 从头开始,我将继续尝试,您的代码完全破坏了我的 x 轴运动,但修复了它;现在看看它是否可以用来使y轴工作......
    • 好吧,最后这给我留下了同样的问题,除了气泡是在他面前而不是在他后面翻译的
    • 没关系让它工作。哦,男孩是那种东西。谢谢你的帮助,我会把我的长子邮寄给你,让你适当地祭祀你认为合适的神。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 2016-09-22
    • 2018-08-03
    相关资源
    最近更新 更多