2013-02-01 5 views
0

나는 자신의 속성을 가진 스프라이트를 여러 개 가질 수 있고 버튼을 한 번에 주기적으로 제어 할 수있는 간단한 게임을 만들고있다. 다음 스프라이트로 이동하고 움직이지 않는 스프라이트와 함께 움직이지 않고 독립적으로 이동하십시오. 내가까지 사용할 수 있습니다다중 스프라이트 만들기 및 사용할 스프라이트 선택

예를 들어

3 스프라이트는 위, 아래, 오른쪽에 하나 개 스프라이트를 이동시킨 후 2 번 버튼과 같은 무언가를 치고, 왼쪽으로 그 다음을 애니메이션뿐만 아니라 컨트롤 또 다른 스프라이트를 이동 전환 나는 또 다른 클래스 (누를 때 바로 애니메이션주기를 통해 벡터를 오른쪽으로 이동하고 이동) 키보드

내 친구가 말했다 사용 목록을 사용하여 스프라이트와 이동을 처리하는 요정 클래스가 다시

전환 그것을 제어하고 list = 2 또는 뭔가가있는 경우와 같이 조건을 넣는다. 다른 스프 라이트를 마녀

답변

0

여기에이 작업을 수행하는 간단한 방법에 대한 내 생각이 있습니다. 는 GAME1 클래스에 새 변수

int selection = 1; 

는 이제 GAME1 클래스의 업데이트 방법으로 이동이 추가 추가해야합니다.

KeyBoardState keyboardState = KeyBoard.GetState(); 

//this is saying that if the selection is 1, only your first sprite will Update, but if press 2 or 3, the selection changes, and the new selected sprite will be the only sprite Updating. 

if (selection == 1) 
{ 
    firstSprite.Update(); 

    if (keyboardState.IsKeyDown(Keys.2)) 
     selection = 2; 
    if (keyboardState.IsKeyDown(Keys.3)) 
     selection = 3; 
} 

if (selection == 2) 
{ 
    secondSprite.Update(); 

    if (keyboardState.IsKeyDown(Keys.1)) 
     selection = 1; 
    if (keyboardState.IsKeyDown(Keys.3)) 
     selection = 3; 
} 

if (selection == 3) 
{ 
    thirdSprite.Update(); 

    if (keyboardState.IsKeyDown(Keys.2)) 
     selection = 2; 
    if (keyboardState.IsKeyDown(Keys.1)) 
     selection = 1; 
} 

어쨌든 도움이 되길 바랍니다.

+0

@ user1836222 답변이 도움이 되었기를 바랍니다. 다음에 XNA에 대한 질문이 있으시면 gamedav.stackexchange.com에서 많은 도움을 얻을 수 있습니다. –

0

컨텍스트 기반 스프라이트 변경을 처리하는 경향은 내 개체에 작은 클래스를 연결하는 것입니다. 이 클래스는 다양한 애니메이션 컬렉션을 보유합니다. 런타임 전에 애니메이션에 대해 얼마나 많이 알고 있는지에 따라 다양한 방법이 있지만, 가장 쉬운 것 같으면 Dictionary<int, List<Rectangle>> 또는 Dictionary<int, Rectangle[]> 일 것입니다. 각 애니메이션에서 각 사각형이 애니메이션에서 다음 프레임의 위치를 ​​설명하는 사각형의 목록 (또는 배열)을 만듭니다. 그런 다음 운동 코드를 설정할 때 설정할 수있는 어딘가에 int currentAnimation이 있습니다. 그리기 코드에서 animations[currentAnimation]을 반복하면서 일정 시간 동안 각 프레임을 그립니다. 이를 위해 프레임이 표시된 시간을 저장하고 각 업데이트 루프의 경과 시간을 추가하며 프레임이 0 인 프레임 시간보다 크거나 같을 때 다음 프레임으로 이동합니다.

관련 문제