Каково точное использование Transform в Unity3D?и пример кода, с которым я имею дело - PullRequest
1 голос
/ 24 марта 2019

Я - разработчик промежуточного единства и все еще в процессе обучения. Я застрял с использованием трансформации игрового объекта. Я знаю, что он обладает свойствами положения, поворота и масштаба, но, следуя клону тетриса, чтобы расширить свои навыки, мне действительно трудно понять. Пожалуйста, не думайте, что это только как игры в тетрис, у меня сложные времена с играми, в которых система сетки в 2 измерениях.

Я поделюсь своего рода кодом ниже, и я действительно не совсем понимаю, что происходит, но только непонимание по инстинкту.

Разработчик должен выполнить следующие шаги, такие как создание массива сетки Transform [,] и попытка назначить блочные данные этому массиву сетки, затем обновить сетку в соответствии с движущимися блоками и т. Д. Это круто. Но я не могу понять, что там происходит с кодом, потому что я не могу сформировать это в своем уме в процессе.

Пример кода здесь;

// will be called from tetromino script
public void UpdateGrid(Tetromino tetromino)
{
    for (int y = 0; y < gridHeight; y++)
    {
        for (int x = 0; x < gridWidth; x++)
        {
            // if there is a current existing tetromino in the grid coordinate
            if (grid[x, y] != null) // registered mino at this position 
            {
                // check to is if the tetromino is there
                // if the parent transform is the tetromino transform that is send as parameter
                if (grid[x,y].parent == tetromino.transform)
                {
                    grid[x, y] = null; // updating the grid
                }
            }
        }
    }

    // updates our grid
    foreach (Transform mino in tetromino.transform)
    {
        Vector2 pos = Round(mino.position);

        if (pos.y < gridHeight)
        {
            // storing mino with transform in that position
            grid[(int)pos.x, (int)pos.y] = mino;
        }                
    }
}

В этом примере кода, что я должен понять? Какая сетка представляет здесь? точка? пустой игровой объект? и что здесь происходит?

Назначает ли он преобразование "mino" как ссылку на объект блока mino?

У меня действительно тяжелые времена с сеточной системой Transform и многими видами игр, так как 2048 или сокрушительные игры, или игры тетрис и т. Д. Имеют такую ​​сеточную систему.

Не могли бы вы помочь мне понять связь между сеткой преобразования и минимальными блоками в сцене?

Я действительно пытаюсь научиться разрабатывать игры и трачу очень много времени на их изучение. Я чувствую, что развиваюсь, но иногда у меня возникают сильные удары на моем пути. Сетка очень важна для отслеживания движущихся объектов или блоков в играх, и я хочу иметь полное представление об этом.

1 Ответ

0 голосов
/ 24 марта 2019

Хорошо, перепутывание терминологии добавит вашей путаницы.

По его мнению, у него есть массив, называемый сеткой, чтобы определить, могут ли вещи двигаться или нет - хотя вы не показали, как определяется сетка, она будет зависеть от того, как она была определена, так что, вероятно, Transform [,] grid = new Transform [x, y] где x и y - размер сетки, о которой она думает, в терминах ширины и высоты физической сетки, представляющей игровую зону.

Короче говоря, Transform mino in tetromino.transform получает все дочерние компоненты и проходит их 1 на 1 В тетрисе это часто упоминается как 4 блока, которые делают форму тетриса известными как мино, где окончательной формой является тетромино, см. https://en.wikipedia.org/wiki/Tetromino

Использование массива для определения того, могут ли все квадраты сдвинуться на 1 или нет, проще, чем попытка переместить объект, и единство определяет, подходит он или нет.

...