0
현재 게임을 만들기 위해 SDL을 사용 중입니다. SDL이 일부 이벤트를 픽업하지 않는 문제가 있습니다. 예를 들어, 나는 앞으로 나아갈 때 'w'를 누르는 동시에, 마우스를 움직여서 둘러 볼 것입니다. 그러나 'a'또는 'd'를 누르거나 SDL이 이러한 이벤트를 선택하지 않거나 'w'를 릴리스하더라도 SDL은 KEYUP 이벤트를 수신하지 않습니다. Windows에서이 코드를 처음 작성했는데 우분투로 전환 한 후에는 더 이상 제대로 작동하지 않습니다. 이 이벤트에서 코드()입니다SDL_PollEvent가 모든 이벤트를 선택하지 않습니다.
while(Running)
{
while(SDL_PollEvent(&event))
Events(&event);
if(active){
Loop();
Render();
}
}
: 나는 이벤트를 폴링 곳 여기 내 주요 루프
switch(Event->type)
{
case SDL_QUIT:
Running = false;
break;
case SDL_KEYDOWN:
switch(Event->key.keysym.sym)
{
case SDLK_ESCAPE:
Running = false;
break;
case SDLK_a:
keyStates['a'] = true;
break;
case SDLK_s:
keyStates['s'] = true;
break;
case SDLK_d:
keyStates['d'] = true;
break;
case SDLK_w:
keyStates['w'] = true;
break;
case SDLK_LSHIFT:
camera.setSpeed(2.0f);
break;
}
break;
case SDL_KEYUP:
switch(Event->key.keysym.sym)
{
case SDLK_a:
keyStates['a'] = false;
break;
case SDLK_s:
keyStates['s'] = false;
break;
case SDLK_d:
keyStates['d'] = false;
break;
case SDLK_w:
keyStates['w'] = false;
break;
case SDLK_LSHIFT:
camera.setSpeed(1.0f);
break;
}
break;
case SDL_MOUSEBUTTONDOWN:
switch(Event->button.button)
{
case SDL_BUTTON_MIDDLE:
mouse.middle = true;
break;
}
break;
case SDL_MOUSEBUTTONUP:
switch(Event->button.button)
{
case SDL_BUTTON_MIDDLE:
mouse.middle = false;
break;
}
break;
case SDL_MOUSEMOTION:
if(moving){
camera.lookat(float(Event->motion.x - winWidth/2),float(Event->motion.y - winHeight/2), MOUSE_SENSITIVITY, dt);
SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE);
SDL_WarpMouse(winWidth/2, winHeight/2);
SDL_EventState(SDL_MOUSEMOTION, SDL_ENABLE);
}
break;
}
이
-1 : 프론트 페이지에 대한 링크는 OP를 불필요한 정보없이 문제에 대한 답변으로 유도하지 않습니다. 물론 그것은 그들을 읽게하고 결국 답을 얻게됩니다. 그러나 문제를 해결하는 데 도움이되지 않는 수많은 엑스트라가 있습니다. – user2738698
@ user2738698 : 야. 질문과 답의 날짜를 확인하십시오. – SigTerm
그래서? 미래의 사람들도 도움이되지 않습니다. 대답의 대부분은 문제가되지 않습니다. 첫 페이지에 대한 링크는 문제를 해결하고자하는 사람들에게 도움이되지 않습니다. – user2738698