private void Start()
{
game = false; //игра не началась
Reset(); //вот в этом проблема
}
private void Update() //просто задает направление
{
if (Input.GetKeyDown(KeyCode.W)) dir = Vector2.up;
else if (Input.GetKeyDown(KeyCode.S)) dir = Vector2.down;
else if (Input.GetKeyDown(KeyCode.D)) dir = Vector2.right;
else if (Input.GetKeyDown(KeyCode.A)) dir = Vector2.left;
}
IEnumerator Move() //создает "хвост", перемещает игрока и ждет полсекунды
{
while (true)
{
Instantiate(prefab, transform.position = new Vector2(transform.position.x, transform.position.y), Quaternion.identity);
transform.Translate(dir.x * transform.localScale.x, dir.y * transform.localScale.y, 0);
yield return new WaitForSeconds(0.5f);
}
}
private void Reset() //сбрасывает все и вся(в случае смерти)
{
transform.position = new Vector2(0, 0); //перемещает игрока в центр и устанавливает длину 0
length = 0;
while (game == false) //если игра не началась, надо нажать на клавишу W и все заработает,
{ // но Юнити просто зависает намертво при запуске самой игры, здесь же
if(Input.GetKeyDown(KeyCode.W)) //нет бесконечного цикла, почему так?
{
game = true;
length = 3;
StartCoroutine(Move());
}
}
}