2010-10-27 3 views
0

J'ai besoin d'aide avec une caméra suite à un sprite. J'ai une classe de caméra qui ne suit pas correctement le sprite. Ma classe de caméra est2d Caméra ne pas suivre correctement le sprite

camera cam; 
cam.position = sprite.position; 

cette partie du code ne s'exécute pas correctement. chaque fois que je lance ce code, il réinitialise mon sprite comme s'il était en position (0,0) et suit mon sprite. Voici un video example de ce dont je parle.
La position de mon sprite est à (60,515).

class Camera2d 
{ 
    public float _zoom; 
    public Matrix _transform; 
    public Vector2 _position; 
    protected float _rotation; 

    public Camera2d() 
    { 
     _zoom = 1.0f; 
     _rotation = 0.0f; 
     _position = Vector2.Zero; 
    } 
    //public float Zoom { } 
    //public float Rotation { } 
    public void Move(Vector2 amount) 
    { 
     _position += amount; 
    } 
    public Vector2 CPos 
    { 
     get { return _position; } 
     set { _position = value; } 
    } 
    public Matrix get_tranformation(GraphicsDevice graphicsDevice) 
    { 
     _transform = Matrix.CreateTranslation(new Vector3(-_position.X, -_position.Y, 0)); 

     return _transform; 
    } 
} 

Répondre

0

Vous recherchez un problème de décalage de sprite. La différence entre la position de votre sprite et la position de votre caméra n'est rien. Par conséquent, votre sprite apparaîtra toujours à {0, 0}.

Si vous dépassez la position de votre caméra de la moitié de sa hauteur et de sa largeur, il semblera centrer votre image-objet.

cam.position = sprite.position; 
cam.position.x -= cam.width/2; 
cam.position.y -= cam.height/2; 
+0

merci pour l'aide –

Questions connexes