Делаю программку для детей, по типу обучения печати. Суть в том, что на экране написаны буквы, и при нажатии на правильную кнопку буква становится с красным фоном, следующая буква становится как бы текущей, принимая желтый фон, а буквы которые не срабатывают с синим фоном. И вот если в слове есть две одинаковые буквы, то первое нажатие проходит корректно, а второе нажатие считается уже типа выполненным. например слово майка, первые 4 буквы все норм. Но стоит нажать в свою очередь к, происходит автоматическое срабатывание А, то есть она меняет фон на красный и считается нажатой. Подскажиьте где косяк?
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Shirtsc : MonoBehaviour { public GameObject letter1wait;//1 буква желтая public GameObject letter1done;//1 буква красная public GameObject letter2sleep;//2 буква синяя public GameObject letter2wait;//2 буква желтая public GameObject letter2done;//2 буква красная public GameObject letter3sleep;//3 буква синяя public GameObject letter3wait;//3 буква желтая public GameObject letter3done;//3 буква красная public GameObject letter4sleep;//4 буква синяя public GameObject letter4wait;//4 буква желтая public GameObject letter4done;//4 буква красная public GameObject letter5sleep;//5 буква синяя public GameObject letter5wait;//5 буква желтая public GameObject letter5done;//5 буква красная public AudioClip letter1, letter2, letter3, letter4, letter5, SoundWhole;//звуки каждой буквы и общее слово float x;//координата букв для изменения public float y = -3.52f;//координата полосы по у bool L1 = false;//проверка нажатия 1 буквы bool L2 = false;//проверка нажатия 2й буквы bool L3 = false;//проверка нажатия 3 буквы bool L4 = false; // проверка нажатия 4 буквы bool L5 = false; int time = 0;//время для срабатывания подъема букв int time1 = 0;// будет равен 1 после срабатывания подъема буквы 1 int time2 = 0;// будет равен 1 после срабатывания подъема буквы 2 int time3 = 0;// будет равен 1 после срабатывания подъема буквы 3 int time4 = 0;// будет равен 1 после подъема буквы 4 int para = 0; //для первой парной кнопки int t = 1;//время ожидания int rand;//рандомная сцена // Use this for initialization
// Update is called once per frame
void Start() { }
// Update is called once per frame void Update() { if (t == 2 && time == 1 &¶==0) { rand = 43; Application.LoadLevel(rand); } if (Input.GetKeyDown(KeyCode.V))//нажатие 1 кнопки { AudioSource.PlayClipAtPoint(letter1, letter1wait.transform.position); Destroy(letter1wait.gameObject);
x = -4; letter1done.gameObject.transform.position = new Vector3(x, y, 0); Destroy(letter2sleep); x = -2; letter2wait.gameObject.transform.position = new Vector3(x, y, 0); L1 = true; para = 1; } if (L1 == true &&L2==false && L5==false) { if (Input.GetKeyDown(KeyCode.F))//нажатие 2 кнопки { if (L1 == true) { x = -2; AudioSource.PlayClipAtPoint(letter2, letter2done.transform.position); Destroy(letter2wait.gameObject); letter2done.gameObject.transform.position = new Vector3(x, y, 0); x = 0; Destroy(letter3sleep); letter3wait.gameObject.transform.position = new Vector3(x, y, 0); L2 = true; L1 = false; L5 = true; } } } if (L2 == true)//нажатие 3 кнопки {
if (Input.GetKeyDown(KeyCode.Q)) { x = 0; AudioSource.PlayClipAtPoint(letter3, letter3wait.transform.position); Destroy(letter3wait.gameObject); letter3done.gameObject.transform.position = new Vector3(x, y, 0); x = 2; Destroy(letter4sleep); letter4wait.gameObject.transform.position = new Vector3(x, y, 0); L3 = true; } } if (L3 == true )//нажатие 4 кнопки {
if (Input.GetKeyDown(KeyCode.R)) { x = 2; AudioSource.PlayClipAtPoint(letter4, letter4wait.transform.position); Destroy(letter4wait.gameObject); letter4done.gameObject.transform.position = new Vector3(x, y, 0); x = 4; Destroy(letter5sleep); letter5wait.gameObject.transform.position = new Vector3(x, y, 0); L4 = true; } } if (L4 == true && L1==true && L5==true)//нажатие 5 кнопки {
if (Input.GetKeyDown(KeyCode.F)) {
x = 4; AudioSource.PlayClipAtPoint(letter5, letter5wait.transform.position); Destroy(letter5wait.gameObject); letter5done.gameObject.transform.position = new Vector3(x, y, 0); StartCoroutine(wait1());//первое появление time=1///
} }
if (time == 1 && time1 == 0 && time2 == 0 && time3 == 0) //подъем 1 буквы { x = -4; y = -3; letter1done.gameObject.transform.position = new Vector3(x, y, 0); time = 0; time1 = 1; AudioSource.PlayClipAtPoint(letter1, letter1done.transform.position); StartCoroutine(wait1()); } if (time == 1 && time1 == 1 && time2 == 0 && time3 == 0)//подъем второй буквы { x = -2; letter2done.gameObject.transform.position = new Vector3(x, y, 0); time = 0; time2 = 1; time1 = 0; AudioSource.PlayClipAtPoint(letter2, letter1done.transform.position); Debug.Log("321"); StartCoroutine(wait1());
} if (time == 1 && time2 == 1 && time3 == 0)//подъем третьей буквы { x = 0; letter3done.gameObject.transform.position = new Vector3(x, y, 0); AudioSource.PlayClipAtPoint(letter3, letter1done.transform.position); time = 0; time1 = 1; time2 = 2; StartCoroutine(wait1());
} if (time == 1 && time2 == 2 && time3 == 0)//подъем 4 буквы { x = 2; letter4done.gameObject.transform.position = new Vector3(x, y, 0); AudioSource.PlayClipAtPoint(letter4, letter1done.transform.position); time = 0; time1 = 3; time2 = 3; time3 = 3; time4 = 1; StartCoroutine(wait1()); } if (time == 1 && time1 == 3 && time2 == 3 && time3 == 3 && time4 == 1)//подъем 5 буквы { x = 4; letter5done.gameObject.transform.position = new Vector3(x, y, 0); AudioSource.PlayClipAtPoint(letter5, letter1done.transform.position); time = 0; time1 = 1; time2 = 1; time3 = 3; StartCoroutine(wait1()); } if (time == 1 && time1 == 1 && time2 == 1 && time3 == 3) { AudioSource.PlayClipAtPoint(SoundWhole, letter1done.transform.position); time2 = 0; time = 0; t = 2; StartCoroutine(wait1()); }
} IEnumerator wait1()//задержка на секунду { //пауза этой функции, возврат через заданное время yield return new WaitForSeconds(t); time = 1; StopCoroutine(wait1()); } }