[PEDIDO DE AJUDA][PURE MAGIC][INDIE][PYGAME] MOVIMENTO DO PERSONAGEM
Eai galera tudo bem? Então venho aqui pedir ajuda no meu game, estou com uma dificuldade na parte do código que é a seguinte, no video abaixo demonstra o que está acontecendo.
O que eu quero fazer é arrumar o movimento do personagem com o speed gerado por level , mais itens e o tipo de ground, igual ao do tibia, porém, primeiro preciso entender como fazer ele andar na velocidade correta só com o valor do speed. O que tem que ser feito é que o personagem deve andar 64pixels em uma direção a uma velocidade x, mas como fazer isso é o problema.
@staticmethod
def check_map_colision(new_posx, new_posy):
loaded_map = json.loads(open(os.path.join(BASE_DIR, "data", "map.json")).read())
player_rect = pygame.Rect(new_posx, new_posy, 64, 64)
for tile in loaded_map["tiles"]:
for obj in tile["objects"]:
if obj["id"] > 1:
obj_rect = pygame.Rect(int(tile["posx"]), int(tile["posy"]), 64, 64)
if player_rect.colliderect(obj_rect):
return True
return False
def input(self):
key = pygame.key.get_pressed()
mods = pygame.key.get_mods()
mouse = pygame.mouse.get_pressed()
new_posx = self.rect.x
new_posy = self.rect.y
############
# MOVEMENT #
############
if key[pygame.K_LEFT] or key[pygame.K_a]:
new_posx -= 64
self.context["direction"] = "WEST"
self.frame_motion()
if key[pygame.K_RIGHT] or key[pygame.K_d]:
new_posx += 64
self.context["direction"] = "EAST"
self.frame_motion()
if key[pygame.K_UP] or key[pygame.K_w]:
new_posy -= 64
self.context["direction"] = "NORTH"
self.frame_motion()
if key[pygame.K_DOWN] or key[pygame.K_s]:
new_posy += 64
self.context["direction"] = "SOUTH"
self.frame_motion()
if not self.check_map_colision(new_posx, new_posy):
self.rect.x = new_posx
self.rect.y = new_posy
self.context["posx"] = self.rect.x
self.context["posy"] = self.rect.y
self.can_move = True
else:
self.can_move = False
Caso precisem verificar o código todo, só em solicitar que eu forneço sem problemas.