entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

Mover jugador después de colisionar

Buenas. Soy yo de nuevo, siento ser pesado, pero es que estoy atascado en algo. Quizás parezca simple, no lo sé, pero llevo horas y no hay manera.

Me gustaría saber la manera de hacer que el sprite de jugador, cuando colisione son un obstaculo, no se mueva, pero cuando cambie de dirección respecto al elemento colisionador (obstaculo), se mueva, no sé si me explico.

Ej.: una casa, cuando chocas con ella se queda quieto, pero cuando vas hacia el lado contrario, se mueve. Eso es lo que quiero conseguir.

El código que realice, que es obvio que no funciona, es el siguiente:

obstacles_list = []
for tile_obj in backGround.tmx_data.objects:
            obst = Obstacle(tile_obj.x, tile_obj.y, tile_obj.width, tile_obj.height)
            obstacles_list.append(obst)

for obstacle in obstacles_list:
            if obstacle.rect.colliderect(player.rect):
                if orientations[0] == orientations[1]:
                    vx=0
                    vy=0

player.move(vx,vy)

Esto lo que hace es que cuando pulso dos veces sobre la misma dirección, si colisiona, se queda parado, y luego se puede mover. Pero si por ejemplo voy hacia abajo (0), y luego hacia la izquierda (3) y debiera colisionar, no colisiona, y pasa por encima de las casas.

En "orientations" tengo una lista donde pongo las dos últimas posiciones usadas: 0 (abajo), 1 (arriba), 2 (derecha), 3 (izquierda)
Para ello, cada vez que pulso un botón, hago lo siguiente:

orientations.remove(orientations[0])
orientations.append(player.orientation)

Así se guardan las dos últimas posiciones.

Gracias de antemano

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta