Esempio n. 1
0
    public void EnemyPoolCreate(int size1, int size2)
    {
        settingObject = new CommonSettingObject {
            Healht = 1,
            Speed  = EnvironmentSingleton.Instance.Width * 0.1f,
            Size   = EnvironmentSingleton.Instance.Width * 0.05f
        };

        size        = size1;
        maxSize     = size2;
        incCapacity = size1;
        size        = size < maxSize ? size : maxSize;
        enemyArray  = new Enemy[size];
        GameObject gameObjectNew;

        for (int i = 0; i < enemyArray.Length; i++)
        {
            //создаем объект и записываем в пул только привязанный компонент со скриптом(ведь всегда можно получить объект)
            gameObjectNew = Instantiate(enemy);
            gameObjectNew.transform.SetParent(parentEnemyPool);
            enemyArray[i] = gameObjectNew.GetComponent <Enemy>();
            enemyArray[i].SettingObject = settingObject;
            //подписываемся на событие
            enemyArray[i].DieEvent += OnDeadEnemy;
        }
    }
Esempio n. 2
0
 // Use this for initialization
 private void Awake()
 {
     settingObject = new CommonSettingObject {
         Healht = 3,
         Speed  = EnvironmentSingleton.Instance.Width * 0.1f,
         Size   = EnvironmentSingleton.Instance.Width * 0.05f
     };
     //чтобы не вызывать каждый раз getComponent при обращении
     cacheRigidbody2D = GetComponent <Rigidbody2D>();
     shiftByVector    = cacheRigidbody2D.position;
     //устанавливаем размер, и начальное положение
     //используем только 1 раз, поэтому можно не кэшировать
     GetComponent <SpriteRenderer>().size = new Vector2(settingObject.Size, settingObject.Size);
     cacheRigidbody2D.MovePosition(new Vector2(0, 0));
     GetComponent <BoxCollider2D>().size = new Vector2(settingObject.Size * 0.95f, settingObject.Size * 0.95f);
     //установим, что при спавне объект смотрит направо
     shiftByVector     = Vector2.right * settingObject.Speed * Time.fixedDeltaTime;
     widthMaxPosition  = EnvironmentSingleton.Instance.WidthMax;
     heightMaxPosition = EnvironmentSingleton.Instance.HeightMax;
 }