0
因此,首先,我遇到了碰撞處理問題。基本上,我有這樣的代碼:pygame中的按鍵處理和邊界碰撞的問題
x_move = 0
player_width = 115
...
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_a:
x_move -= 6
if event.key == pygame.K_d:
x_move += 6
print(x_move)
if event.type == pygame.KEYUP:
if event.key == pygame.K_a or event.key == pygame.K_d:
x_move = 0
if x > display_width - player_width:
x_move -= 1
if x < 0:
x_move += 1
x += x_move
顯然,當玩家按下「A」他們向左走,當他們按「d」,他們去的權利。現在邊界碰撞非常便宜,我從一開始就知道這一點。
我的想法是檢測玩家輸入的畫面,如果畫面(或其後的畫面)在屏幕外,減去精靈的寬度(這樣玩家的一半不在屏幕外 - 這是一個飛船),然後拒絕玩家繼續前進。
現在,這其他的實現實際上阻止了玩家繼續前進,但是如果他們不斷點擊A或D,他們將逐幀移出屏幕。
但是,當他們碰到邊緣時,他們會逐字地反彈回來,如果他們在正確的時間點擊相反的方向,他們會增加速度並加快速度。
第二個問題是 - 除非他們完全釋放密鑰 - 他們不能使用另一個密鑰。它阻止他們去任何地方。
任何人都可以幫助我瞭解幕後故事嗎?這兩個問題一直是我身邊的一個棘手問題。
使用此代碼時,玩家會在邊緣處凍結。 –
例如,當玩家要離開(K_a)時,他們必須完全釋放K_a鍵,然後才能向右走。通常遊戲允許一個人用最近按下的那個覆蓋另一個。這樣做非常不切實際,所以我希望能夠用任何按鍵來覆蓋按鍵。 –
所以你想讓玩家在邊緣彈跳? 您可以創建一個變量來計算按下了多少個鍵 –