python - pygame中的移动速度
问题描述
我正在 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,表示速度不变,或设置为 0.5,表示速度减半。
根据我从代码中可以理解的内容,看起来您一次移动一个像素。您可以将其乘以 0.5 以使玩家以一半的速度移动。
如果您可以提供一个最小的可运行示例或在代码中添加更多注释,您可能会收到更好的答案。
推荐阅读
- java - 如何在 DBSCAN 聚类算法上实现多线程?
- python - 如何使 python 的 read_csv 以字母数字顺序读取文件
- spring-boot - 创建将对象保存在对象中的控制器方法
- mysql - 如何结合连接有效地预过滤行?
- c++ - 减去数组中的内存地址,但它给了我实际的数字
- c++ - 下标 C++ unordered_map 导致没有匹配的构造函数来初始化“坐标”错误
- python - 在pycharm中调试时,如何仅通过for循环的某个迭代进行调试?
- java - 如果用户输入了无效的代码怎么打码呢?
- c# - 如何更改请求正文中的参数名称?
- css - 我在网站上的按钮在 Android 上看起来与在 PC 上不同。如何改变这个?