2014-01-28 33 views
0

我有一个游戏正在进行(2D)游戏,当我尝试获取鼠标坐标时,它们是错误的。我不知道是什么问题,但这里是我的代码,我得到的坐标:为什么我的游戏解释鼠标指针坐标错误

MouseState mouseState; 
mouseState = Mouse.GetState(); 
test = new Tower(TowerTexture, new Vector2(mouseState.X, mouseState.Y)); 
//test is drawn where mouse pointer is thought to be and it is drawn off 

这里是塔绘制代码:

foreach (Tower tower in towers) 
    { 
     tower.Draw(spriteBatch); 
    } 

这里是塔绘制函数:

public virtual void Draw(SpriteBatch spriteBatch) 
{ 
    spriteBatch.Draw(texture, center, null, Color.White, rotation, 
    origin, 1.0f, SpriteEffects.None, 0); 
} 

一件事是,当鼠标指针,真正的一个较为接近,在左上角的假设鼠标坐标偏移量较少,但你去越来越接近右下屏幕的角落假设的鼠标坐标更远。 我真的不知道什么是错,但任何想法可能是错误的将不胜感激。谢谢!

+0

坐标错误...以什么方式? – melak47

+0

你能把代码粘贴到你画塔的地方吗? –

+0

您可能想要提供一些关于'mouseState.X'和'mouseState.Y'返回的位置是“关闭”的更多信息。根据文档,返回的坐标是相对于游戏窗口的左上角。 –

回答

1

这是回应这个问题和你的question on hold。要解决此问题,可以在绘制图像时缩小图像。我不太确定center的价值是什么,但我的猜测是这是一个以鼠标指针为中心的矩形。要缩小图像,尝试这样的事情:

Rectangle center; 

public Tower(Texture2D TowerTexture, Vector2 location) 
{ 
    float scaledown = 10; 
    float XOffset = TowerTexture.Width/(2 * scaledown); //get an X and Y offset to center the image in the rectangle 
    float YOffset = TowerTexture.Height/(2 * scaledown); 
    this.center = new Rectangle(location.X + XOffset, location.Y + YOffset, 
     XOffset * 2, YOffset * 2); 
} 

然后,像你以前那样画出这个图像,使用center作为目标矩形。我在没有编译器或调试的情况下编写了这段代码,但我认为它应该给你一个基本的想法。 HTH

+0

当我在谈论图像时,我指的是背景 – Detinator10

+0

@ Detinator10,你可以使用类似于我上面提到的东西。只需将背景的中心矩形改为'new Rectangle(0,0,1366,768)' – davidsbro

+0

好吧,我会尝试。 – Detinator10

0

什么是错误的是,我的形象的决议比我的屏幕的决议更大。