es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo hacer aparecer en bucle como un caracol pero en cuadrado.

Hola, soy francés, así que disculpa mi mal inglés por favor,
Creé una generación de terreno con una semilla usando objetos de juego prefabricados, pero aparecen de columna en columna, así que me gustaría crear esto, pero comenzando desde el centro hacia fuera, como un caracol, pero en forma cuadrada.

Lo logré parcialmente, la primera imagen muestra la generación en columnas, pero también el resultado final deseado con la generación en forma de caracol, y la segunda muestra lo que logré hacer, es decir, en forma de caracol, pero mis piezas de terreno son cuadradas y queda mal.

Primero:
Imagen 1

Segundo:
Imagen 2

Funciona así:
Imagen 3

Y quiero que funcione así:
Imagen 4

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en c#, bucle for, malla y generación procedural de terrenos, entiendo su preocupación acerca de generar un terreno en forma de caracol en lugar de aparecer de columna a columna. Las imágenes que compartió claramente muestran el problema al que se enfrenta.

    Para crear un terreno en forma de caracol, puede usar bucles for anidados y realizar un seguimiento de la posición de los gameobjects generados. Debe comenzar desde el centro y moverse hacia afuera, rotando la dirección de aparición después de cada generación de un nuevo cuadrado.

    Aquí hay un ejemplo de pseudocódigo que debería ayudarlo a lograr el resultado deseado:

    “`c#
    int size = 10; // tamaño del terreno en forma de caracol
    int x = size / 2; // comenzar en el centro del terreno
    int y = size / 2;
    int direction = 0; // 0: derecha, 1: abajo, 2: izquierda, 3: arriba

    for (int i = 1; i <= size * size; i++)
    {
    // generar el gameobject en la posición x, y
    SpawnGameObject(x, y);

    // moverse a la siguiente posición según la dirección
    switch (direction)
    {
        case 0: // derecha
            if (x + 1 < size && IsEmpty(x + 1, y))
            {
                x++;
            }
            else
            {
                direction = 1;
                y++;
            }
            break;
        case 1: // abajo
            if (y + 1 < size && IsEmpty(x, y + 1))
            {
                y++;
            }
            else
            {
                direction = 2;
                x--;
            }
            break;
        case 2: // izquierda
            if (x - 1 >= 0 && IsEmpty(x - 1, y))
            {
                x--;
            }
            else
            {
                direction = 3;
                y--;
            }
            break;
        case 3: // arriba
            if (y - 1 >= 0 && IsEmpty(x, y - 1))
            {
                y--;
            }
            else
            {
                direction = 0;
                x++;
            }
            break;
    }
    

    }
    “`

    Tenga en cuenta que en este pseudocódigo, SpawnGameObject() es una función que genera el gameobject en la posición dada, y IsEmpty() es una función que verifica si la posición dada está vacía (es decir, no ocupada por un gameobject).

    ¡Espero que esto le ayude a generar el terreno en forma de caracol que desea!

Comments are closed.