所以,首先我遇到碰撞处理问题。基本上我有这个代码:
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,他们将逐帧移出屏幕。
然而,目前,当他们到达边缘时,他们确实会反弹并反转方向,如果他们在正确的时间向相反的方向发射,他们将提高速度并加快速度。
第二个问题是 - 除非他们完全释放密钥 - 否则他们无法使用另一个密钥。它阻止他们去任何地方。
任何人都可以帮助我理解幕后发生的事情吗?这两个问题一直是我的荆棘。
答案 0 :(得分:0)
对于&#34;他们不断点击A或D,他们会逐帧移出屏幕&#34; 您只需要更改代码:
if x > display_width - player_width + x_move:
x_move = 0
if x - x_move < 0:
x_move = 0
如果你不明白为什么,我可以解释一下,但我认为这很容易理解......
但是,我不明白&#34;他们不能使用另一个键&#34;,你在想什么?