2014-01-30 264 views
0

在XNA 4.0中,我如何得到一個精靈移動到鼠標座標。我知道這可能是這樣做的:xna精靈鼠標位置

if (ms.LeftButton == ButtonState.Pressed) 
{ 
    Vector2 shipPos = new Vector2(ms.X,ms.Y); 
} 

但是因爲我使用的攝像頭跟在船後面,這不能正常工作。原因是鼠標的位置相對於屏幕,如果當我點擊窗口的左上角時船已經移動到讓(500,500)的位置,船就返回到(0,0) ,即使艱難,我也希望這艘船從船舶位置向角落移動。下面是我的矩陣代碼:

class Camera 
{ 
    public Matrix transform; 
    Viewport view; 
    Vector2 centre; 

    public Camera(Viewport newView) 
    { 
     view = newView; 
    } 
    public void Update(GameTime gameTime, Game1 ship) 
    { 
     int w = Game1.width; 
     int h = Game1.height; 
     centre = new Vector2(ship.FSpos.X - (w/2 - 189/2), 
          ship.FSpos.Y - (h/2-128/2)); 
     transform = Matrix.CreateScale(new Vector3(1, 1, 0)) * 
        Matrix.CreateTranslation(new Vector3(-centre.X, -centre.Y, 0)); 
    } 
} 
+0

哎呀,不好用語言:d。我的意思是船舶應該從中心(例如(500,500))移到相對於位於左上角的地圖的位置。這些座標是狂野的猜測,但相對於世界的座標可能是(100,740) – John

+0

嗯......有人刪除了他的評論:D – John

+1

根據您的相機如何定義,您不能只添加相機的偏移量嗎?例如'shipPos = new Vector2(ms.X,ms.Y)+ camera.TopLeftCorner;' – itsme86

回答

0

你可以做這樣的事情:

if (ms.LeftButton == ButtonState.Pressed) 
{ 
    Vector2 shipPos = new Vector2(
         ms.X-screenWidth/2 + previousShipPosition.X, 
         ms.Y-screenHeight/2 + previousShipPosition.Y 
        ); 
} 
+0

謝謝千倍:D – John