美好的一天。我正在使用Python 3.6.5和Pygame。您会发现,即使没有,我的Mario
子画面也一直在移动。这是与相关的代码:
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
my_change = -2.5
if pygame.key == pygame.KEYUP:
if event.key == pygame.K_UP:
my_change = 2.5
my += my_change
正如我所说,它只是不断向上,向上,向上,向上!
答案 0 :(得分:1)
您的逻辑是否正确-KEYDOWN是按下键时的键,而KEYUP是释放时的键-因此,您需要设置更改以设置方向,即K_UP是向上箭头,K_DOWN是向下箭头-因此,也许可以尝试一下更像
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
my_change = -2.5
if event.key == pygame.K_DOWN:
my_change = 2.5
my += my_change
答案 1 :(得分:0)
将其更改为类似的内容
running = True
while running:
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
my_change -= 2.5
if event.key == pygame.K_DOWN:
my_change += 2.5
my += my_change
答案 2 :(得分:0)
您要添加“重力”。您可以看一下stackoverflow,并且会有数百个类似的问题。
基本思想是重力始终存在,您不仅可以在按下按键时添加重力。
您没有发布完整的代码,因此假设您正在执行的检查位于主循环中,并且您正在使用标准的“ +方向偏低”设置,那么您要做的就是始终将运动向底部添加,仅在按下按钮时将其反向。
这意味着类似的东西(再次,我猜不到完整的代码):
my_change = 2.5
running = True
while running:
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
my_change = -2.5
if event.key == pygame.KEYUP:
if event.key == pygame.K_UP:
my_change = 2.5
my += my_change
如果您将change
视为velocity
可能会有所帮助,因此,如果您给出正速度,它将向下移动,如果它为负,它将向上移动,如果0根本不会移动。