Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: Pokerry en Septiembre 15, 2018, 05:08:13 AM

Título: Movimiento De Tablero
Publicado por: Pokerry en Septiembre 15, 2018, 05:08:13 AM
Buenas, necesito que me ayuden en algo y es que empece con el desarrollo de un VideoJuego su mecánica es un tablero por turno pero tengo un problemilla y es que quiero que las fichas las toco y tenga una determinada cantidad de movimientos ejemplo 5 y yo tenga a mi disposición moverme como yo quiera 3 arriba y 2 a la derecha o viceversa siempre y cuando la casilla este libre pero no se hacer la mecánica intente con Raycast pero al detectar la primera casilla las demás no se detectan ayúdenme... El Juego es 2D
Título: Movimiento De Tablero
Publicado por: Igor en Septiembre 15, 2018, 11:11:50 AM
yo creo que alguna especie de PathFinding por casillas le iria bien....
Título: Movimiento De Tablero
Publicado por: juanma_teso en Septiembre 15, 2018, 02:42:01 PM
No sé cómo tienes hecho el tablero pero puedes hacer un bucle doble sobre las casillas para saber si las posibles casillas están libres o tienen algo:
 

public KeyValuePair<int,int> CeldasLibres (int pasos, int xInicial, int yInicial)
{
List <KeyValuePair<int,int>> celdasDisponibles;
for(int x = 0; x < pasos; x++)
{
   for (int y = 0; y < pasos-x; y++)
        {
      si [xInicial + x, yInicial + y] está libre lo añades a la lista.
      si [xInicial + x, yInicial - y] está libre lo añades a la lista.
      si [xInicial - x, yInicial - y] está libre lo añades a la lista.
      si [xInicial - x, yInicial + y] está libre lo añades a la lista.
        }
    }
return celdasDisponibles;
}

 
Si te fijas el bucle recorre primero las filas de arriba y abajo, luego se mueve una a la derecha e izquierda cada vez, ya depende de cómo tengas tu tablero, también tienes que tener en cuenta que si tienes un array no debes de acceder a posiciones que no estén contenidas dentro del array, por ejemplo si alguna coordenada es negativa no debes de usar esa posición.
Título: Movimiento De Tablero
Publicado por: Pokerry en Septiembre 15, 2018, 08:25:46 PM
Cita de: juanma_teso date=1537015321No sé cómo tienes hecho el tablero pero puedes hacer un bucle doble sobre las casillas para saber si las posibles casillas están libres o tienen algo:
   
   

public KeyValuePair<int,int> CeldasLibres (int pasos, int xInicial, int yInicial)
{
List <KeyValuePair<int,int>> celdasDisponibles;
for(int x = 0; x < pasos; x++)
{
   for (int y = 0; y < pasos-x; y++)
        {
      si [xInicial + x, yInicial + y] está libre lo añades a la lista.
      si [xInicial + x, yInicial - y] está libre lo añades a la lista.
      si [xInicial - x, yInicial - y] está libre lo añades a la lista.
      si [xInicial - x, yInicial + y] está libre lo añades a la lista.
        }
    }
return celdasDisponibles;
}

   
      Si te fijas el bucle recorre primero las filas de arriba y abajo, luego se mueve una a la derecha e izquierda cada vez, ya depende de cómo tengas tu tablero, también tienes que tener en cuenta que si tienes un array no debes de acceder a posiciones que no estén contenidas dentro del array, por ejemplo si alguna coordenada es negativa no debes de usar esa posición.
   


@juanma_teso Pues muchas gracias por tu ayuda