【发布时间】: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:如何在不移动中心点的情况下使围绕角色的环绕摄像机气泡变大(转置不起作用或我使用错误!)
编辑:我希望我能在这上面放一个赏金,哈哈
【问题讨论】: