【发布时间】:2017-04-12 13:48:29
【问题描述】:
所以,首先我在碰撞处理方面遇到了麻烦。基本上我有这个代码:
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,他们会逐帧移出屏幕。
然而,目前,当它们撞到边缘时,它们实际上会反弹并反转方向,如果它们在正确的时间撞到相反的方向,它们会增加速度并加快速度。
第二个问题是 - 除非他们完全释放一个密钥 - 他们不能使用另一个密钥。它可以防止他们去任何地方。
谁能帮助我了解幕后发生的事情?这两个问题一直是我的眼中钉。
【问题讨论】:
标签: python python-2.7 pygame