파이 게임 라이브러리를 사용하고 있습니다. 다음은 플레이어 처리 내 이벤트에 대한 의사 코드입니다 :파이 게임에서 플레이어가 부드럽게 움직입니다.
#generates multiple events for keys that are held down
pygame.key.set_repeat(30,30)
for event in pygame.event.get()
nextPos = currentPos
if(keyUp):
if event.key == w :
key_w = false
#do the same for s, a and d
if(keyDown):
if event.key == w:
key_w = true
#same for s,a and d
if(key_w):
#update nextPos
#do same for key_s, key_a and key_d
currentPos = nextPos
문제는 그 나는 화면에 내 마우스를 이동하고 이벤트를 처리하는 동안 나는, 동시에 키를 누르면있어 때때로 때 마우스의 이벤트는 대기열에 올려 져 있으며이 여러 번의 키 누름이 함께 실행되므로 플레이어는 엄청난 거리를 뛰어 넘는 것처럼 보입니다.
마우스를 전혀 움직이지 않으면이 문제가 발생하지 않습니다.
프레임 당 한 번 폴링을하더라도 마우스를 움직일 때까지 제대로 작동합니다. 내가 마우스를 움직이면서 동시에 키를 누르면 플레이어는 같은 위치에서 멈추게됩니다. 4-5 초 후, 이전에 누르던 키에 따라 다시 움직입니다. – Karan
Ok, 부분적으로 해결되었습니다. pygame.event.set_blocked를 사용하여 이벤트 대기열에서 mousemotion을 제거했습니다. 하지만 지금은 총알을 쏘기 위해 마우스 크릭을 사용하고 싶습니다 (사격 게임). 이것은 같은 문제를 일으키는 것인데,이 경우에는 마우스 클릭으로 인한 이벤트가 적기 때문에 플레이어는 작은 거리를 점프합니다 – Karan