pilas-engine

Colisiones y tilemap a la vez

Ayuda, estoy recreando el juego del tutorial de HaxeFlixel, y he hecho un mapa con la funcion de definir y crear mapa para obviamente el mapa, este es el código: `class PlayState extends Escena {

  iniciar() {
    this.pilas.definir_mapa({
      "b": "bloquePared"
    });

    this.pilas.crear_mapa(`
      b
      b
      b
    `, 32)
  }

  actualizar() {

  }

}

todo perfecto, se muestra bien, su configuración de las físicas es:
image
, perfecto, en el jugador para detectar la colisión, he puesto esto (obviamente fuera del update o inicio)

    if (otro.etiqueta == "bloquePared"){
      this.decir('parar');
    }
  }
}```

he comprobado y la etiqueta si que es bloquePared, pero no hace nada al colisionar, ¿alguien me podría ayudar?

hola @Rintri
¿qué función para detectar colisiones estas usando? Es decir, dentro de qué función está metido el if (otro.etiqueta == " ...
El bloquePared es un actor no dinámico, por lo tanto el actor en el que vas a detectar la colisión debería ser Dinámico. Así al chocar con bloquePared se va a detener. Y para detectar la colisión debes usar algo como:

cuando_comienza_una_colision(otro_actor: Actor){
     if (otro_actor.etiqueta == "bloquePared"){
      this.decir('parar');
    }
  }

Se ha hablado de este tema en este otro hilo, quizás pueda ayudarte:

Sí, usé de referencia ese post, y obviamente usé esa función de colisión, pero aun así no funciona :(.

Hola @Rintri, lo que yo probaría es usar la función cuando_colisiona en lugar de cuando_comienza_una_colision. Si esa función se ejecuta es porque estaríamos ante el caso que dice @lukeitor y las dos figuras sean no dinámicas.

Otra opción para depurar el programa es llamar a la función “print” dentro del método cuando_comienza_una_colisión antes del if:

print(otro.etiqueta)

Esto último te lo sugiero para que nos podamos dar cuenta si lo que falla es que no se llama a función cuando_comienza_una_colision o acaso no te está tomando el nombre de la etiqueta del actor. Una vez que agregues esa linea, tendrías que abrir el intérprete que aparece abajo de la pantalla del juego y debería aparecer el nombre de la etiqueta que colisiona con el actor:

Si nada de esto te funciona, también podrías enviarnos el link al juego así lo vemos. Aunque el juego no esté terminado seguramente podamos ver en qué condiciones de produce la colisión para ayudarte.

¡Abrazo!