首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >2D游戏中的XNA矩阵摄像机比例问题

2D游戏中的XNA矩阵摄像机比例问题
EN

Stack Overflow用户
提问于 2009-11-13 17:41:12
回答 1查看 2.9K关注 0票数 0

我按照http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/上的教程实现了一个相机,它遵循我的播放器sprite的放大/缩小功能。

然而,当我放大/缩小时,相机似乎要么在移动的同时慢慢远离精灵,我不认为我设置的位置正确,但我似乎无法弄清楚它需要是什么。

这里有一些片段,如果有用的话

代码语言:javascript
运行
复制
  if (cam.Follow)
        {
            RectangleF temp = playerBoundingBox;
            cam.Pos = new Vector2(
                (temp.X + temp.Width / 2)*cam.Zoom,
               temp.Y + temp.Height / 2) * cam.Zoom;
        }



    public Matrix get_transformation(GraphicsDevice graphicsDevice)
    {
        _transform =
            // Add Zoom
              Matrix.CreateScale(
               new Vector3((_zoom * _zoom * _zoom),
                                 (_zoom * _zoom * _zoom), 0))
            // Add Camera Rotation
             * Matrix.CreateRotationZ(_rotation)
            // Add Camera Position
             * Matrix.CreateTranslation(
                new Vector3((graphicsDevice.Viewport.Width * 0.5f) - _pos.X,
                                 (graphicsDevice.Viewport.Height * 0.5f) - _pos.Y,
                                  0));
        return _transform;
    }

提前谢谢你。

EN

Stack Overflow用户

回答已采纳

发布于 2009-11-14 19:34:49

我通过http://xnachat.com/找到了答案

代码语言:javascript
运行
复制
Position = Vector2.Zero;
ScreenPosition = new Vector2(GraphicsDevice.ViewPort.Width / 2, GraphicsDevice.ViewPort.Height / 2);
Zoom = Vector2.Zero;
Rotation = 0;
public virtual Matrix ViewTransformationMatrix() 
{ 
    Vector3 matrixRotOrigin = new Vector3(Position, 0); 
    Vector3 matrixScreenPos = new Vector3(ScreenPosition, 0.0f); 

    return Matrix.CreateTranslation(-matrixRotOrigin) * 
        Matrix.CreateScale(Zoom.X, Zoom.Y, 1.0f) * 
        Matrix.CreateRotationZ(Rotation) * 
        Matrix.CreateTranslation(matrixScreenPos); 
} 

因为某些原因,我在我的原始帖子中贴出的矩阵是缩放值

票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1728207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档