Проблема с вращением тетриса - PullRequest
0 голосов
/ 16 октября 2018

Я делаю тетрис, и у меня возникают проблемы с работой ротаций для группы блоков.Мои группы блоков состоят из 4 блочных спрайтов, которые являются дочерними для пустого игрового объекта.

enter image description here

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

this.transform.position += new Vector3(1, 0);
if (IsValidGridPos())
    UpdateGrid();

this.transform.Rotate(0, 0, -90);
if (IsValidGridPos())
    UpdateGrid();

Для каждой группы у меня есть центральная точка, куда я хочу, чтобы группа переместилась /вращаться вокругНа рисунке ниже показано, где находятся мои центральные точки для каждой группы.

enter image description here

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

Есть ли лучший способ обработать движение группы /вращение

1 Ответ

0 голосов
/ 17 октября 2018

Для групп I и O их центральные точки расположены либо между дочерними блоками, либо сбоку от блоков.Это привело к тому, что мой скрипт нереста установил центральную точку группы в правильном положении, но не их дочерние блоки.

Позиции для Group_I и позиции детей.

Чтобы устранить эту проблему, я создал новый скрипт, который будет перемещать позицию преобразования группы 0,5 по осям x и y, как только группасоздал.

const float DISTANCE = 0.5f;
void Awake()
{
    // Moves the center point of a Group over so it's 
    // child blocks can align correctly with the game grid.
    this.transform.position += new Vector3(DISTANCE, DISTANCE);    
}

Если у кого-то есть лучшее решение, пожалуйста, дайте мне знать.Спасибо всем, кто прокомментировал мой вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...