UWP 용 간단한 2D 게임 엔진을 작성 중입니다. XNA에서 가져온 코드 스 니펫 (snippet)을 가지고 특정 키가 눌려 졌는지 확인하고 (아래 참조), 비슷한 것을하려고합니다.UWP에서 이벤트없이 누름 키 감지
내 게임 엔진에서는 전용 이벤트 핸들러 (KeyDown 등)를 사용하지 않고 대신 내 게임 루프에서 누른 키를 확인합니다 (가능한 경우 가능). 그 이유 중 하나는 키와 타이머를 동시에 사용하여 총알이 발사되는 빈도를 제어 할 수 있다는 것입니다. 또한 위쪽 및 오른쪽 화살표 키는 플레이어 1에 대각선 운동을 제공하고 다른 플레이어 (동일한 키보드 사용)는 A 및 W 키를 사용하여 다른 방향으로 문자를 이동시키는 등 키가 서로 독립적이되도록합니다. 그들은 둘 다 때때로 레이저 총을 발사합니다. 마지막으로, 나는 항상 내 게임 코드의 나머지 부분과는 별도로 동작하는 이벤트 핸들러를 사용하여 컨트롤이 결여되었다. 이것은 KeyPress 이벤트에서 특히 그렇습니다.
public void DrawHelp()
{
if (Keyboard.GetState().IsKeyDown(Keys.Tab))
{
을 .. 그리고 이것은 내가 사용하는 노력하고있어입니다 : 내가 찾은
코드는 다음과 같습니다. 그러나 Keyboard 클래스 단어는 Intellisense에서 나에게 제공되지 않습니다 (Windows.UI.Xaml.Input; using이 기본적으로 첨부되어 있음에도 불구하고). ,
int counter = 0;
// Raised every tick while the DispatcherTimer is active.
private void EachTick(object sender, object e)
{
TrackKeyboard();
CalculateMoves();
Physics.CollisionDetection();
DrawGame();
}
private void TrackKeyboard()
{
if (Keyboard.GetState().IsKeyDown(Keys.P)) PauseGame();
if (counter % 10 == 0) //control movements
{
if (Keyboard.GetState().IsKeyDown(Keys.Down)) AddSpeed("Player1", 0, -1);
if (Keyboard.GetState().IsKeyDown(Keys.Left)) AddSpeed("Player1", -1, 0);
if (Keyboard.GetState().IsKeyDown(Keys.Up)) AddSpeed("Player1", -1, 0);
if (Keyboard.GetState().IsKeyDown(Keys.Right)) AddSpeed("Player1", 0, 1);
if (Keyboard.GetState().IsKeyDown(Keys.W)) AddSpeed("Player2", -1, 0);
if (Keyboard.GetState().IsKeyDown(Keys.D)) AddSpeed("Player2", 0, 1);
if (Keyboard.GetState().IsKeyDown(Keys.S)) AddSpeed("Player2", -1, 0);
if (Keyboard.GetState().IsKeyDown(Keys.A)) AddSpeed("Player2", 0, 1);
}
if (counter % 5 == 0) //fire
{
if (Keyboard.GetState().IsKeyDown(Keys.Space)) Fire("Player1");
if (Keyboard.GetState().IsKeyDown(Keys.X)) Fire("Player2");
}
}
를 그래서이 뭔가를 작성할 수 있습니다 : - (그것은 내가 원하는 것을 보여주기 위해 그냥 코드가 잘못)
는 내가 생각하고있어 기본적으로 문이 경우의 연속이다 UWP 및 만약 그렇다면 : 어떻게?
저는 Bing과 Google에서이를 검색했지만 UWP에 대한 정보는 거의 없습니다.
나는 비슷한 질문을 CodeProject (https://www.codeproject.com/Questions/1107441/How-do-I-register-events-from-two-players-in-UWP)에서 발견했다. 그러나 나는 대답하기에 너무 어렵고, 어쨌든이 코드를 게임 루프에 포함시키는 편이 더 좋다.
너무
감사합니다 (또한. 내가 걸릴려고 경로 내가 인식되지 않을 수있는 몇 가지 기술적 인 이유로 바보 있으면 알려 주시기 바랍니다) 및 새해 복 많이 받으세요!
페터
답장을 보내 주셔서 감사합니다. 내가 유토피아를 시도 할 기회를 얻었을 때 나는 대답을 채점 할 것이다. – user2040543
안녕하세요, 어쩌면 미안 해요. 어리석은 것 같아요.하지만이게 어떻게 열쇠를 찾아내는 데 열중할지는 모르겠군요. 좀 더 완벽한 예를 들어 주거나 포인터를 가리키는 데 문제가 될 수 있습니까? – user2040543
@ user2040543 예 : –