Exemplo n.º 1
0
	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);
            }
        }
	}
Exemplo n.º 2
0
	/// <summary>
	/// Перемещаем пулю движением по заранее заданным точкам.
	/// </summary>
	/// <returns></returns>
	/// <param name="_sum">Число пуль</param>
	/// <param name="reload_time">Задержка между выстрелами</param>
	/// <param name="_rotation">Угол на который повернута пуля при инициализации. Используется при смещении массива пуль.</param>
	/// <param name="_PointArray">Массив точек, по которым будет двигаться пуля.</param>
	public IEnumerator point_move(float _sum, float _reload_time, float _rotation, float _init_rotation_speed, float _inwavessum, float _wave_rot_spawn, danmaku_types _type, List<Point> _PointArray, float [] _bullet_params)
	{
		_inwavessum =(_inwavessum <= 0) ? 1 : _inwavessum;
		Danmaku create_new = set_danmaku_type (_type); 
		Danmaku clone_bullet;
		for (float timer = 0; timer < _sum; timer += 1) {
			float cur_wave_rot = 0;
			for (int i = 0; i < _inwavessum; i++) 
			{
			clone_bullet = create_new;
			clone_bullet.type = movement_type.points;
			set_move_params (clone_bullet, _bullet_params, rotate_axis (_PointArray));
			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);
			}
		}
	}
Exemplo n.º 3
0
	/// <summary>
	/// Задает параметры пули.
	/// </summary>
	/// <param name="_bul_params">Массив параметров.</param>
	/// <param name="_type">Класс пули.</param>
	void set_bul_params(float[]_bul_params, danmaku_types _type)
	{
		switch (_type) 
		{
		case danmaku_types.Bullet:
			//print ("Set bullet params");
			break;
		default:
			break;
		}
			
	}
Exemplo n.º 4
0
	/// <summary>
	/// Получаем класс пули, которой стреляем.
	/// </summary>
	/// <returns>Возвращает класс пули.</returns>
	Danmaku set_danmaku_type(danmaku_types _type)
	{
		Danmaku _bullet=null;
		switch (_type) 
		{
		//Для оптимизации стоит хранить такие вещи в object pool, а не грузить каждый раз.
		case danmaku_types.Bullet:
	//		GameObject bullet_obj = Resources.Load ("Prefab/Bullet")as GameObject;
	//		_bullet = bullet_obj.GetComponent<Bullet> ();
			_bullet=bullet_type;
			break;
		default:
		//	print ("Неправильно задан тип пули");
			break;
		}
		return _bullet;
	}