私はpygameライブラリを使用しています。以下は、プレーヤーの取り扱い私のイベントのための擬似コードです:パイゲームの滑らかな動き
#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
問題は、時々私は、画面上の私のマウスを移動するとことで、イベントを処理している間、私は、同時にキーを押していますキーのイベントがキューに入れられ、これらの複数のキー押下が一緒に実行されるので、プレイヤーは巨大な距離を飛び越えているように見えます。
この問題は、マウスをまったく移動しないと発生しません。
フレームごとに1回ポーリングしても、マウスを動かすまでは正常に動作します。私がマウスを動かして同時にキーを押すと、プレイヤーは同じ位置に止まってしまいます。 4〜5秒後に、私は以前に押されたキーに応じて再び動き始めます – Karan
OK、部分的に解決されました。私は、pygame.event.set_blockedを使用してイベントキューからmousemotionを削除しました。しかし今、私は弾丸を撃つためにマウスクリックを使いたいです(それはシューティングゲームです)。これは同じ問題を引き起こしていますが、この場合、マウスクリックによるイベントの数が少ないため、プレイヤーは小さな距離をジャンプします – Karan