マウスの位置を取得して描画するための簡単なコードを次に示します。
class Pointer
{
MouseState currPointerState;
Vector2 currPointerPos;
public Pointer()
{
}
public void Update()
{
currPointerState = Mouse.GetState();
currPointerPos.X = currPointerState.X;
currPointerPos.Y = currPointerState.Y;
}
public void Draw(SpriteBatch spriteBatch, Texture2D pointerTexture)
{
spriteBatch.Draw(pointerTexture, currPointerPos, Color.White);
}
}
次に、メインのゲームファイルで:
protected override void Update(GameTime gameTime)
{
pointer.Update();
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
pointer.Draw(spriteBatch, pointerTexture);
menuManager.Draw(spriteBatch, menu_bar);
spriteBatch.End();
base.Draw(gameTime);
}
ゲームは今のところウィンドウで実行されますが、マウスは実際のマウス位置よりも約 500 ピクセル右にあり、100 ピクセル下にあります。
これは、次のコードを追加した後に発生しました: (メニュー描画クラス)
enum MenuState
{
mainMenu,
playing,
options
};
class MenuManager : Game1
{
MenuState menuState = MenuState.mainMenu;
Vector2 button1 = Vector2.Zero;
public void Draw(SpriteBatch spriteBatch, Texture2D menuBar)
{
switch (menuState)
{
case MenuState.mainMenu:
spriteBatch.Draw(menuBar, button1, Color.White);
break;
}
}
}
}
マウスの位置が変更された理由は何ですか?