2013-04-10 32 views
1

我有一個基本的按鈕類,它發光時,鼠標是在按鈕上,併爲我的主菜單工作。然而,有一個暫停函數,我的x值會一直有所不同。我有一個相機類,它可以改變視口,並根據玩家的位置進行滾動。這一切工作正常。但是,當我引入暫停選項時,Drawn「按鈕」被正確放置,但用於鼠標檢測的矩形與該距離相距一定距離。動態移動暫停按鈕矩形正確,但繪圖不正確

replay.SetPosition(new Vector2(camera.viewport.Width/4 + 50,camera.centre.Y)); 
//replay.SetPosition(new Vector2((int)camera.centre.X , (int)camera.centre.Y); 
replay.Update(mouse); 

註釋掉了一個正確繪製圖像,但矩形是關閉的。 的未註釋版本具有正確的矩形放置但圖像停留在目前200(X),250(Y)

if (isPaused) 
{ 
    spriteBatch.Draw(pauseTexture,pauseRectangle, Color.White); 
    //replay.Draw(spriteBatch); 
    exit.Draw(spriteBatch); 
    mainmenu.Draw(spriteBatch); 
} 

相機類更新元素:

public void Update(Vector2 position, int xOffset, int yOffset) 
{ 
    if (position.X < viewport.Width/4) 
     centre.X = viewport.Width/4; 
    else if (position.X > xOffset - (viewport.Width/4)) 
     centre.X = xOffset - (viewport.Width/4); 
    else centre.X = position.X; 
} 

我將是最大約需要的時候添加信息。感謝所有的幫助!

回答

0

不幸的是,我還沒有足夠的代表評論,所以基於給出的信息,我會盡我所能來回答。

聽起來像你的矩形和你的菜單項的位置沒有一起更新。假設你有(0,0)的位置和(0,0,100,100) - (x,y,寬度,高度)的矩形,所以矩形從(0,0)延伸到(100,100 )。例如,如果將位置更新爲(100,100),則還必須將矩形的x和y座標更新爲(100,100),因此矩形現在從(100,100)延伸到(200,200) 。

我沒有足夠的信息從你的代碼示例中告訴你哪裏出了問題,但是從我所能告訴的是發生了什麼。

在另一方面..如果你傳遞相機的變換矩陣SpriteBatch.Begin(...),你也正在抽獎,有SpriteBatch.Begin...End部分中調用你的HUD元素,你應該考慮沒有相機的變換矩陣另一個SpriteBatch.Begin...End部分傳遞這樣,您的HUD元素的位置將以屏幕座標與世界座標相比較,並且不會遇到類似的問題。 HUD元素通常不會改變位置,除非您允許它們,但與世界座標相比,您仍然可以在屏幕座標中工作。

例子:(請記住,我不記得的參數是完全爲SpriteBatch.Begin(...)什麼,但這應該幫助)

//Main Draw function 
public void Draw() { 
    //World Coordinates 
    spriteBatch.Begin(cameraTransformationMatrix); 
    //Draw all world coordinate objects 
    //Player, Enemies, Walls, etc. 
    spriteBatch.End(); 

    //Screen Coordinates 
    spriteBatch.Begin(); 
    //Draw all screen coordinate objects 
    //Menus, In-Game HUD elements, etc. 
    spriteBatch.End(); 
} 
+0

哇...我從來沒有想過使用分離式spriteBatch.Begin的() ; /結束它修復了它......在屏幕上移動按鈕並按需要暫停覆蓋工作。我非常感謝你。被困在調試中,以及幾個小時以後的事情......座標系不是問題......至少我不知道。繪圖是問題。非常感謝你的幫助。我現在終於可以完成暫停菜單,並進入調整我的遊戲功能...再次感謝 – Eddy 2013-04-10 16:12:49

+0

沒有問題,很高興幫助你!如果你可以請幫助我的代表,如果你接受我的答案,那很棒。謝謝=) – cmhley 2013-04-10 16:24:24