Как я могу организовать несколько анимаций? Нужна помощь, чтобы сделать комбинацию - PullRequest
2 голосов
/ 07 мая 2020

У меня проблема в скриптах Unity3d.
Я пытаюсь создать что-то вроде комбинации, чтобы открыть окно.
Чтобы открыть это окно, мне нужно правильно вставить комбинацию из 3 кнопок.
Эти 3 кнопки (это простой GameObject, уже помещенный в мою сцену) уже имеют анимацию, когда мой персонаж сталкивается с одной из них, эта упадет (такая же анимация для других 2).
Итак, комбинация что я хочу вставить: «первая правильная кнопка -« Кнопка n * 2 », вторая правильная кнопка -« Кнопка n * 1 », а третья правильная кнопка -« Кнопка n * 3 »», но я действительно не у меня есть представление о том, как я должен это делать.
Я пробовал с операторами if, но если, например, комбинация 123-312-123, появится анимация ящиков.
Я хочу этого, только если я сделаю комбинация 213 коробка открыта, тогда, если я go ошибся, мне придется повторить комбинацию.
Кто-нибудь может мне помочь?

1 Ответ

1 голос
/ 07 мая 2020

Простой способ, иметь коллекцию правильной последовательности:

int[] solution = new int[]{2,1,3};

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

List<int> sequence = new list<int>();
void OnPress(int buttonValue)
{
    if(sequence.Contains(buttonValue)){ return; } // Don't add twice
    sequence.Add(buttonValue);
    if(sequence.Count == solution.Length)
    {
         if(CompareSequence())
         {
               // win
         }
         else
         {
             sequence.Clear();
         }
    }
}

bool CompareSequence()
{
    // this should not be since we checked before but just to be sure
    if(solution.Length != sequence.Count){ return false; }
    for(int i = 0; i < solution.Length; i++)
    {
         if(solution[i] != sequence[i]){ return false; }
    }
    return true;
}

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

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