public IEnumerator move(int _sum, float _reload_time, float _rotation, float _init_rotation_speed, float _inwavessum, float _wave_rot_spawn, danmaku_types _type, float[] _danmaku_move_params,float [] _bullet_params, movement_type movement) { _inwavessum =(_inwavessum <= 0) ? 1 : _inwavessum; // При инициализации пули, её экземпляр класса принимает null. // Поэтому создаем два экземпляра - первый хранит тип пули, второй используется для инициализации пули // и копирует тип из первого экземпляра Danmaku create_new = set_danmaku_type (_type); Danmaku clone_bullet; // wave_1 - число волн - параметр sum // wave_2 - кол-во пуль в одной волне - новый параметр // wave_3 - угловая разница между пулями в волне // на будущее - параметры положения спауна пуль // итого 2 параметра для волны for (float timer = 0; timer < _sum; timer += 1) { float cur_wave_rot = 0; for (int i = 0; i < _inwavessum; i++) { clone_bullet = create_new; set_move_params (clone_bullet, _danmaku_move_params, movement); set_bul_params (_bullet_params, _type); clone_bullet = Instantiate (clone_bullet.transform, emiiter_transform.position, Quaternion.Euler (0, emiiter_transform.rotation.eulerAngles.y + _rotation+cur_wave_rot, 0)) as Danmaku; cur_wave_rot += _wave_rot_spawn; } _rotation += _init_rotation_speed; if (_reload_time > 0) { yield return new WaitForSeconds(_reload_time); } } }
public Enemy(int new_health, int new_speed, movement_type new_movement) { health = new_health; speed = new_speed; movement = new_movement; }
/// <summary> /// Задает параметры движения пули в зависимости от типа движения /// </summary> /// <param name="_params">Массив значений.</param> /// <param name="_type">Тип движения пули.</param> void set_move_params(Danmaku _bullet, float [] _params, movement_type _type) { _bullet.type = _type; switch (_type) { // Порядок значения в массиве и тип движения определяют за что отвечает каждая цифра в массиве параметров. // Неудобно, нет подсказки при вводе. case movement_type.simple: _bullet.Speed = _params [0]; _bullet.Acceleration = _params [1]; _bullet._rotation = _params [2]; _bullet._angular_acceleration = _params [3]; break; case movement_type.second: _bullet.Speed = _params [0]; _bullet.Acceleration = _params [1]; _bullet._rotation = _params [2]; _bullet._angular_acceleration = _params [3]; _bullet._max_rotation = _params [4]; break; default: //print ("Неправильно задан тип движения"); break; } }