Pygame,角色移动速度

Posted

技术标签:

【中文标题】Pygame,角色移动速度【英文标题】:Pygame, Character Movement Speed 【发布时间】:2019-05-09 16:54:47 【问题描述】:

我是犹他大学的一名学生,我正在研究 Pygame 的一个项目,但我遇到了一些小问题。我已经编写了整个游戏的代码,它运行得很好,但是我希望我的角色在某些地形上行走时可以放慢速度。例如,如果他/她走过一块沙砖,我希望他/她的速度减半。由于我仍在学习,因此我无法自己解决这个问题。我的代码的链接如下。任何帮助将不胜感激!

我相信解决方案会出现在这些代码行中:

if keys[pygame.K_LEFT]:
    is_facing_left = True
    movement_x -= tile_rect.width
    mapx -= 1
if keys[pygame.K_RIGHT]:
    is_facing_left = False
    movement_x += tile_rect.width
    mapx += 1
if keys[pygame.K_UP]:
    movement_y -= tile_rect.height
    mapy -= 1
if keys[pygame.K_DOWN]:
    movement_y += tile_rect.height
    mapy += 1

if mapx < 0:
    mapx = 0
    movement_x = 0
if mapx > world.get_width()-1 - map_tile_width:
    mapx = world.get_width()-1 - map_tile_width
    movement_x = 0
if mapy < 0:
    mapy = 0
    movement_y = 0
if mapy > world.get_height()-1 - map_tile_height:
    mapy = world.get_height()-1 - map_tile_height
    movement_y = 0

如果您想查看完整的代码,请点击此处:

https://github.com/DanPatWils/AdventureGame/blob/master/Almost

【问题讨论】:

【参考方案1】:

您有多个格式为mapx -= 1 的行。你可以在这个循环之外使用一个变量来跟踪你的速度,然后你可以使用mapx -= current_speed 来移动你的角色。然后你可以根据不同的情况修改你的速度。

你应该确保你的游戏的事件循环和地图大小足够大,这样你的角色就不会看起来像是在传送而不是在高速运行。

【讨论】:

以上是关于Pygame,角色移动速度的主要内容,如果未能解决你的问题,请参考以下文章

改变精灵动画速度(pygame)

按键被按下时如何增加速度变量?

练手项目:利用pygame库编写射击游戏

与按键相关的角色移动,随着角色速度的提高而提高动画速度

Pygame移动加速问题,平台游戏[重复]

如何在Pygame中降低Sprite FPS?