Para que funcionen los rayos, cada pieza con la que va a colisionar el rayo debe tener un BoxCollider.
Pasos en la realización del videojuego Puzzle con RayCast
Seleccionar una pieza (lanzar un rayo 2D y 3D)
Mover pieza con RayCast
Explicación del método mover pieza.
Un rayo es infinito. Nos interesa mover la pieza al punto correcto de profundidad; por eso utilizamos la variable longitudRayo.
limiteRayo será el segmento que va desde la cámara, hasta el punto en que colisionamos con el bounding box de la pieza. Sin embargo, si la pieza tiene profundidad z=0, la bounding box tendrá una profundidad diferente y cada vez que llamemos a moverPieza() cambiaremos su ubicación, porque el origen de coordenadas de la pieza no coincide con el punto de impacteato, y la pieza se desplazará.
Poner las piezas que se están moviendo por delante
Arrastrar y soltar
Comprobar si he dejado la pieza en la posición correcta
Tendré dos listas de piezas: fichasMoviles (que serán las que el usuario desplazará) y fichasSolución (cuyo componente SpriteRenderer desactivaré para que no se vean y que contendrá las piezas en su ubicación final).
Detectar cuando el puzzle está completo
Desordenar piezas
Desordenar piezas al cabo de un tiempo
Creamos el atributo global permitirJugar para que si el jugador pulsa sobre una pieza antes de que estas se desordenen no sea tenido en cuenta en el recuento de piezas movidas correctamente.