¿Por qué cuando agrego un espacio entre los cubos en una cuadrícula, todo el tamaño de la cuadrícula cambia?

jdoedoe doedoe

La cuadrícula es de 10x10

Este es el script original antes de agregar espacios:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GridGenerator : MonoBehaviour
{
    public GameObject gridBlock;
    public int gridWidth = 10;
    public int gridHeight = 10;
    public List<Vector3> positions = new List<Vector3>();
    public List<GameObject> blocks = new List<GameObject>();

    private GameObject[] wallsParents = new GameObject[4];

    void Start()
    {
        wallsParents[0] = GameObject.Find("Top Wall");
        wallsParents[1] = GameObject.Find("Left Wall");
        wallsParents[2] = GameObject.Find("Right Wall");
        wallsParents[3] = GameObject.Find("Bottom Wall");

        GenerateGrid();
    }

    private void GenerateGrid()
    {
        for (int x = 0; x < gridWidth; x++)
        {
            for (int z = 0; z < gridHeight; z++)
            {
                GameObject block = Instantiate(gridBlock, Vector3.zero, gridBlock.transform.rotation) as GameObject;
                block.transform.parent = transform;
                block.transform.tag = "Block";
                block.transform.localScale = new Vector3(1, 0.1f, 1);
                block.transform.localPosition = new Vector3(x, 0, z);
                block.GetComponent<Renderer>().material.color = new Color(241, 255, 0, 255);

                if (block.transform.localPosition.x == 0)//TOP
                {
                    positions.Add(block.transform.localPosition);
                    block.transform.parent = wallsParents[0].transform;
                    block.transform.name = "TopWall";
                }
                else if (block.transform.localPosition.z == 0)//LEFT
                {
                    positions.Add(block.transform.localPosition);
                    block.transform.parent = wallsParents[1].transform;
                    block.transform.name = "LeftWall";
                }
                else if (block.transform.localPosition.z == gridWidth - 1)//RIGHT
                {
                    positions.Add(block.transform.localPosition);
                    block.transform.parent = wallsParents[2].transform;
                    block.transform.name = "RightWall";
                }

                else if (block.transform.localPosition.x == gridHeight - 1)//BOTTOM
                {
                    positions.Add(block.transform.localPosition);
                    block.transform.parent = wallsParents[3].transform;
                    block.transform.name = "BottomWall";
                }

                blocks.Add(block);
            }
        }
    }
}

Y el resultado: las 4 paredes están en su lugar:

Red

Luego cambié la línea:

block.transform.localPosition = new Vector3(x, 0, z);

A

block.transform.localPosition = new Vector3(x * 1.5f, 0, z * 1.5f);

Y ahora el resultado es que las 4 paredes están en posiciones incorrectas:

red

¿Tengo que multiplicar también los bloques de las paredes?

Pero si ya multiplico todos los bloques por 1.5f, ¿por qué los bloques de las paredes no cambian la posición también en 1.5f?

Umair M
block.transform.localPosition = new Vector3(x * 1.5f, 0, z * 1.5f);

esta línea se establecerá, localPosition.x = 1.5f * xlo que solo afectaría a las paredes derecha e inferior porque, para las paredes superior e izquierda, la x = 0multiplicación no afectará.

Debe cambiar su comparación para verificar el valor del índice en lugar de localPosition:

if (x == 0) //TOP

if (z == 0) //LEFT

if (z == gridHeight - 1) //RIGHT

if (x == gridWidth - 1) //BOTTOM

Esto agregará los bloques correctos en las paredes independientemente de la posición.

Espero que esto ayude :)

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

TOP Lista

CalienteEtiquetas

Archivo