Pygame, velocidad de movimiento del personaje

Soy un estudiante de la Universidad de Utah y estoy trabajando en un proyecto en Pygame con el que estoy teniendo problemas menores. He codificado la totalidad del juego, y funciona perfectamente, pero me gustaría que mi personaje disminuya el movimiento cuando camina sobre cierto terreno. Por ejemplo, si él / ella camina sobre una baldosa de arena, me gustaría que su velocidad se redujera a la mitad. No he podido resolver esto por mi cuenta ya que todavía estoy aprendiendo. El enlace a mi código está abajo. Cualquier ayuda sería muy apreciada!

Creo que la solución vendrá dentro de estas líneas de código:

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

El código completo está aquí si desea verlo:

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

Tienes múltiples líneas de la forma mapx -= 1 . Podría usar una variable fuera de este bucle que rastrea su velocidad, y luego puede usar mapx -= current_speed para mover su personaje. A continuación, puede modificar su velocidad de acuerdo a diferentes condiciones.

Debes asegurarte de que el bucle de eventos de tu juego y el tamaño del mapa sean lo suficientemente grandes, para que no parezca que tu personaje se está teletransportando en lugar de correr a alta velocidad.