2016-11-06 1 views
0

처음 XNA 게임을 만들려고하는데 다음을 구현하는 방법을 알 수 없습니다. 다른 유형의 개체 목록이로드되고 그려집니다. 해당 개체 중 하나를 클릭하면 같은 유형의 새 개체를 만들어이 새 개체를 다른 목록에 추가해야합니다. 다음 코드를 시도했는데 새 목록에서 원하는만큼 개체를 추가 할 수 있지만 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

나는 이것을 click 이벤트에서 호출한다고 가정합니다.

루프를 통과 할 때마다 마우스 상태를 폴링합니다. 객체 0을 처음으로 통과하면 previousButtonState = mouse.LeftButton을 설정하므로 후속 루프의 if 문은 항상 false가됩니다.

처음에는 previousButtonState을 어떻게 설정했는지 모른 채 완전한 예제를 제공 할 수는 없지만 올바른 방향의 단계는 MouseState mouse = Mouse.GetState()을 루프 외부에 배치하여 한 번만 가져올 수 있습니다.

+0

감사합니다. MouseState mouse = Mouse.GetState() 및 previousButtonState = mouse.LeftButton은 루프 외부에 있어야합니다. – Ksenia

+0

@Ksenia 기쁜 마음으로 도와 드리겠습니다. 도움이되었다고 생각하면 upvote와 체크 표시가 커뮤니티의 다른 회원에게 도움이 될 수 있음을 알릴 수 있습니다. – SteelSoul