2015-03-06 5 views
0

Мне нужна помощь в игре, которую я создаю. Я строю игру с движком Unity и довольно новичок в кодировании C#. Я создаю игру 2d, в которой игрок контролирует цвет квадрата и должен изменить его на правильный цвет, как при прохождении определенного цветного объекта. Игрок сильно меняет цвета, и объекты являются триггерами. Когда игрок передает триггер, если его цвет не соответствует правильному цвету игрока. Хорошо, что работает отлично, но только для первого объекта следующий, независимо от цвета игрока, который умирает. Я пробовал if in in if if, и если я не могу это понять. Ваша помощь будет принята с благодарностью!Триггер не отвечает, как я хочу в единстве 3d

Вот код для игрока

void OnTriggerEnter (Collider other) 
{ 
    if (other.transform.tag == "Blue") { 
     blue = true; 
    } 
    else { 
     blue=false; 
    } 

    if (other.transform.tag == "Red") { 
     red = true; 
     } 
    else { 
     red =false; 
    } 

    if (other.transform.tag == "Blue" && GameObject.Find ("Blue").GetComponent<Blue>().mb == false) { 
        yield return 0; 
        Die(); 
    } else if (other.transform.tag == "Red" && GameObject.Find ("Red").GetComponent<Red>().mr == false) { 
        Die();  
    } 

} 

Вот код для каждого другого цвета объекта. Этот, кажется, синий.

void Update() { 
    if (GameObject.Find ("Player").GetComponent<Movement>().blue == true && GameObject.Find ("Player").GetComponent<Movement>().playerBlue == true) { 
        mb = true; 
      } else { 
     mb = false;   
    } 
    if (!GameObject.Find("Player").GetComponent<Movement>().blue) { 
     mb = false; 
    } 
} 

ответ

0

Ваш заказ на исполнение немного грязный, вероятно, поэтому он не работает. Постарайтесь, чтобы вся ваша логика шла по одному пути, а не по двум. Прямо сейчас, вы находитесь:

  • (1) Colliding, (2) установка некоторых булевых переменных, (3) проверка некоторых переменных, (4) произвольное умение.
  • В отдельное время в отдельном классе, установить логическое значение, которое было установлено на шаге 1 и настройку переменного, которая проверяется на шаге 3

Это то, что мы называем спагетти кодом. Все это скручено. Можете ли вы придумать способ распутать его, так что два бита логики не взаимно зависят друг от друга?

Например, я вижу в последнем блоке кода, вы проверяете, является ли игрок синим. Не могли бы вы запустить этот код, когда игрок устанавливает blue (или устанавливает blue=false)?

Редактировать: Я знаю, что это не является строго ответом на ваш вопрос, но этот распутывание является первым шагом процесса решения проблемы.

 Смежные вопросы

  • Нет связанных вопросов^_^