/// <summary> /// создаём объект на одной из 4-х сторон экрана, где 1-лево, 2-верх, 3-низ, 4-право /// затем сетим нужные данные в зависимости от того создали астероид или тарелку /// </summary> private void Spawn() { Vector3 startPos; Vector3 endPos; switch (Random.Range(1, 4)) { case 1: startPos = new Vector3(-_stats.width, Random.Range(-_stats.height, _stats.height), 1); endPos = new Vector3(_stats.width, Random.Range(-_stats.height, _stats.height), 1); break; case 2: startPos = new Vector3(Random.Range(-_stats.width, _stats.width), -_stats.height, 1); endPos = new Vector3(Random.Range(-_stats.width, _stats.width), _stats.height, 1); break; case 3: startPos = new Vector3(_stats.width, Random.Range(-_stats.height, _stats.height), 1); endPos = new Vector3(-_stats.width, Random.Range(-_stats.height, _stats.height), 1); break; default: startPos = new Vector3(Random.Range(-_stats.width, _stats.width), _stats.height, 1); endPos = new Vector3(Random.Range(-_stats.width, _stats.width), -_stats.height, 1); break; } Vector2 direction = endPos - startPos; float angle = Mathf.Atan2(direction.x, direction.y) * Mathf.Rad2Deg; if (SpawnUfo()) { _obj = PoolManager.Get(_Ufo); Ufo component = _obj.GetComponent <Ufo>(); _obj.transform.position = startPos; _obj.transform.rotation = Quaternion.Euler(0, 0, -angle); component.target = _targetForUfo; component.Shot(); } else { _obj = PoolManager.Get(_Asteroid); } _obj.transform.position = startPos; _obj.transform.rotation = Quaternion.Euler(0, 0, -angle); Enemy enemy = _obj.GetComponent <Enemy>(); enemy.gameController = _gameController; enemy.speed = GetSpeed(); enemy.Move(); StartCoroutine(SpawnDelay()); }