2016-11-06 6 views
0

私は最初のXNAゲームを作成しようとしており、次の実装方法を理解することはできません。 さまざまな種類のオブジェクトのリストがロードされ、描画されています。そのオブジェクトの1つをクリックすると、同じタイプの新しいオブジェクトを作成し、この新しいオブジェクトを別のリストに追加する必要があります。 次のコードを試してみましたが、新しいリストに必要な数のオブジェクトを追加できますが、0番目のオブジェクトをクリックした場合のみ(すべて0番目のオブジェクトの型があります)。他のオブジェクトをクリックしても何も起こりません。それを動作させるには?選択を実装する方法

for (int i = 0; i < initialPlanets.Count; i++) 
{ 
    MouseState mouse = Mouse.GetState(); 
    if (initialPlanets[i].CollisionRectangle.Contains(
    mouse.X, mouse.Y) && 
    mouse.LeftButton == ButtonState.Released && 
    previousButtonState == ButtonState.Pressed) 
    { 
     userPlanetSequence.Add(new Planet(
     initialPlanets[i].Type, 
     GetPlanetSprite(initialPlanets[i].Type), 
     new Vector2(100 * (i + 1), 100))); 
    } 
    previousButtonState = mouse.LeftButton; 
} 

答えて

0

これは、クリックイベントで呼び出すと仮定します。

ループを通過するたびに、マウスの状態をポーリングしています。最初にオブジェクト0を通過するときには、previousButtonState = mouse.LeftButtonを設定して、後続のループのif文は常に偽になります。

previousButtonStateの初期設定方法を知らずに完全な例を挙げることはできませんが、正しい方向のステップはMouseState mouse = Mouse.GetState()をループの外に置き、1回だけ取得します。

+0

ありがとうございました。 MouseState mouse = Mouse.GetState()およびpreviousButtonState = mouse.LeftButtonは、ループの外側にある必要があります。 – Ksenia

+0

@Ksenia喜んで助けてくれました。役に立つと思ったら、アップヴォートとチェックマークがコミュニティの他のメンバーにも役立つかもしれないと伝えます。 – SteelSoul

関連する問題