0

XNAをいじって、スプライトをクリックして何かが起こったときに、次のコードを入力します。

if(Mouse.GetState().LeftButton == ButtonState.Pressed)

{

        if (sprite.Bounds.Contains(Mouse.GetState().X, Mouse.GetState().Y))
          {
              this.Exit();
          }
}

マウスでスプライトにカーソルを合わせてクリックしても何も起こらないのはなぜですか?

そして、どうすればこれを修正できますか?

これが役立つ場合は、2Dスプライトを長方形で記述しました

4

2 に答える 2

0

Texture.Boundsテクスチャの場所に長方形を配置しません。XとYの値は両方とも0に等しくなります。

入力.Contains()に基づいて実行する独自の長方形を作成する必要があります。SpriteBatch.Draw()

ここに画像の説明を入力してください

テクスチャ「logoTexture」は、画面の左下隅の近くにあります。

于 2012-08-23T21:38:27.713 に答える
0

Bounds が次のように計算されていることを確認してください。

public Rectangle Bounds
{
    get
    {
        return new Rectangle(position.X - width / 2, position.Y - height / 2, width, height);
    }
}

また、Mouse.GetState() への参照は、必要に応じて呼び出すのではなく、更新ごとに 1 回取得することをお勧めします。

于 2012-08-23T13:44:08.620 に答える