2009-11-13 5 views
0

J'ai suivi le tutoriel sur http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/ pour réaliser une caméra qui suit mon sprite de joueur avec la fonctionnalité de zoom in/out. Cependant, lorsque j'effectue un zoom avant/arrière, l'appareil photo semble s'éloigner lentement de l'image-objet tout en bougeant, je ne pense pas que je mets la position correctement, mais je n'arrive pas à comprendre ce que c'est doit être.XNA Matrix Camera Scale Problème en 2D Game

Voici quelques extraits si elle aide

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; 
    } 

vous remercie d'avance.

Répondre

3

Je trouve la réponse par http://xnachat.com/

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); 
} 

aurait été la matrice correcte à utiliser, pour une raison quelconque, je la matrice dans mes cubes posté de message original la valeur du zoom