2016-06-06 2 views

답변

1

키보드의 상태가 업데이트 (...)주기 (또는 이에 상응하는 이에 상응하는 것) 사이에서만 새로 고침되어 루핑이 유용하지 않을 것으로 생각됩니다.

키보드 상태의 변경을 감지하려면 키보드 상태 연속적인 업데이트 (...) 사이를 비교해야합니다.

+0

내가 언급했던 루프는 사실 Update() 메소드였습니다. 게임이 업데이트 될 때마다 호출되어야합니다. 맞습니까? – Omegastick

+0

Monset의 답변은 주요 변경 사항을 감지하는 공통 패턴을 보여줍니다. – lzcd

2

은 다음과 같이 확인해보십시오 :

KeyboardState newState; 
public void Update(...) 
{ 
    newState = Keyboard.GetState(); 
    if(newState.IsKeyDown(Keys.Enter)) 
    { 
     *do what you want here* 
    } 
} 

이 방법은 각 프레임에 서로 다른 키 입력을 확인할 수 있도록 각 업데이트에 당신이 (키를 누르면) 현재 키보드 상태를 업데이트하고 있습니다.

편집 :
당신은 한 번의 클릭으로 확인하고 싶은 것, 그래서 대신이 질문에, 여기에 질문에 "보너스"입니다. 비슷한 코드입니다 :

KeyboardState newState, oldState; 
public void Update(...) 
{ 
    //gets keyboard state for this single frame 
    newState = Keyboard.GetState(); 

    //checks if enter is down 
    if(newState.IsKeyDown(Keys.Enter)) 
    { 
     *do what you want here* 
    } 

    // checks if enter is clicked 
    // if statement asks if in this frame, enter button is down 
    // AND if enter button was not down in the last frame 
    // this way, if statement below will fire only on each click 
    if(newState.IsKeyDown(Keys.Enter) && oldState.IsKeyUp(Keys.Enter)) 
    { 
     *do what you want here* 
    } 

    //set old state to new state, so the next frame knows 
    //what was happening in frame before that one 
    oldState = newState; 
} 
0

컴퓨터를 다시 시작하면 문제가 해결되면서 코드 외부에 버그가 있었을 것입니다.

관련 문제