Переместить ось X, когда она больше 6 C # Unity - PullRequest
0 голосов
/ 16 мая 2018

В настоящее время у меня проблемы с этим

enter image description here

Что со мной происходит, это

enter image description here

Вот мой код

string[,] table = new string[104, 6];
int xIndex = -1;
int yIndex = 0;
int counter = 0;


if (table.GetLength(0) < xIndex)
{
     break;
}

if (result.Equals(newPreviousValue) && yIndex < table.GetLength(1))
{
     yIndex += 1;
     counter++;
     table[xIndex, yIndex] = result;
}
else
{
      xIndex += 1;
      yIndex = 0;
      counter = 0;
      table[xIndex, yIndex] = result;
}
if (result.Equals("T") && yIndex < table.GetLength(1))
{
    yIndex += 1;
    table[xIndex, yIndex] = result;
}
     newPreviousValue = result;
     //new position
 if (counter < 6) { 
     bigroad.transform.localPosition = new Vector3(xIndex * 19, yIndex * -19, 0f);
 }
 else
 {
      bigroad.transform.localPosition = new Vector3(xIndex * 19, yIndex * -95, 0f);
 }

Что мне нужно, так это то, что если newPrevious (которое состоит из СИНИХ, КРАСНЫХ И ЗЕЛЕНЫХ) имеет значение BLUE / RED / GREEN и превышает значение 6, оно автоматически переместится на одно значение по оси X, но в том же ряду.

Может кто-нибудь помочь мне, пожалуйста.

EDIT

Я использую код Игнасио

if (counter > 6)
{
     xIndex2 += 1;
     yIndex2 = 0;
     table[xIndex2, yIndex2] = result;
}

if (counter < 6)
{
    bigroad.transform.localPosition = new Vector3(xIndex * 19, yIndex * -19, 0f);
}
else
{
    int reminder = counter % 6;
    bigroad.transform.localPosition = new Vector3((xIndex2 + reminder) * 19, -95, 0f);
}

Но это дает мне это

enter image description here

Если вы посмотрите внимательно, у него есть сборный домик в том же положении, сэр.

1 Ответ

0 голосов
/ 16 мая 2018

Итак, корень проблемы здесь:

if (counter < 6) { 
     bigroad.transform.localPosition = new Vector3(xIndex * 19, yIndex * -19, 0f);
 }
 else
 {
      bigroad.transform.localPosition = new Vector3(xIndex2 * 19, yIndex2 * -95, 0f);
 }

Поскольку вы умножаете на -95, вы помещаете его в первый ряд.

То, что вы должны сделать вместо этого, выглядит примерно так:

if (counter < 6) { 
         bigroad.transform.localPosition = new Vector3(xIndex * 19, yIndex * -19, 0f);
     }
     else
     {
          int reminder = counter % 6;
          bigroad.transform.localPosition = new Vector3((xIndex2 + reminder) * 19, yIndex2 -19, 0f);
     }

Таким образом, в основном вы будете продолжать размещать блок в последнем ряду, который в вашем случае вы используете значение -19, умноженное на индекс.

И напоминание поможет вам вместо этого изменить столбец, то есть переместить блоки по оси X. Так, например, 7% 6 = 1. Затем вы добавите один (1 позиция справа) к блоку. Если 8% 6 = 2. Вы добавите две позиции справа ...

Редактировать:

Это может быть из-за этой части. Возможно ли, что вы уже увеличиваете значение оси здесь? :

if (counter > 6)
{
     xIndex2 += 1;
     yIndex2 = 0;
     table[xIndex2, yIndex2] = result;
}

Редактировать 2:

Я не уверен, что ваша первая позиция - когда yIndex = 0 или yIndex = 1. Я предполагаю, что первая позиция - когда yIndex = 1. Дайте мне знать, если это когда yIndex = 0.

if (counter < 6) { 
         bigroad.transform.localPosition = new Vector3(xIndex * 19, yIndex * -19, 0f);
     }
     else
     {
          int reminder = counter % 6;
          bigroad.transform.localPosition = new Vector3((xIndex2 + reminder) * 19, -19, 0f);
     }

Редактировать 3:

Теперь вам нужно удалить эту часть, так как вы добавляете сюда дополнительный +1 к xIndex

if (counter > 6)
{
     xIndex2 = 0; //Here you were adding + 1
     yIndex2 = 0;
     table[xIndex2, yIndex2] = result;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...