// Use this for initialization void Start() { m_rb2d = GetComponent <Rigidbody2D>(); m_animator = GetComponent <Animator>(); if (m_rb2d == null || m_animator == null) { Debug.LogError("Components not set!"); return; } // получем контроллеры игроков, они нам потребуются для определения подбора GameManager gmanager = GameManager.GetInstance(); if (gmanager.GameMode == GameManager.GAME_MODE.SINGLE) { m_playerControllers.Add(gmanager.GetPlayer()); } else if (gmanager.GameMode == GameManager.GAME_MODE.DUEL) { m_playerControllers.Add(gmanager.GetPlayers(PLAYER.PL1)); m_playerControllers.Add(gmanager.GetPlayers(PLAYER.PL2)); } m_state = BONUS_STATE.READY; }
/**********************************************************************************/ // проверяем подбор объекта // /**********************************************************************************/ protected virtual void CheckForPicking() { m_chekingRateCounter -= Time.deltaTime; if (m_chekingRateCounter <= 0.0f) { m_chekingRateCounter += m_chekingRate; // производим проверку подбора foreach (PlayerController plCtr in m_playerControllers) { m_position = GetLocalPosition(); Point playerPosition = plCtr.GetGlobalPosition(); if (playerPosition.IsSamePoint(m_position)) { plCtr.ApplyBonus(BonusType); m_state = BONUS_STATE.TAKEN; // если бонус был сброшен с орбиты if (BonusSource == BONUS_SOURCE.ALIEN) { // оповещаем DropManager о том, что бонус был подобран DropManager.GetInstance().BonusWasTaked((Base.GO_TYPE)BonusType); } // включаем анимацию взятия бонуса и выходим m_animator.SetBool("Burn", true); if (m_productionBase != null) { m_productionBase.ReleaseProduction(0); } return; } } } }
/**********************************************************************************/ // обновляем статус объекта // /**********************************************************************************/ public void ResetBonus() { m_position = GetLocalPosition(); m_state = BONUS_STATE.READY; gameObject.SetActive(true); }