Jump to content
Pokerry

Movimiento De Tablero

Recommended Posts

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
5 hours ago, juanma_teso said:

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.

@juanma_teso Pues muchas gracias por tu ayuda

Edited by Pokerry

Share this post


Link to post
Share on other sites

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...