void Start() { m_state = UNIT_STATE.ACTIVE; Weapon.SetUnitID(ID); Weapon.SetOwner(PLAYER.NEUTRAL); Grenade.SetUnitID(ID); Grenade.SetOwner(PLAYER.NEUTRAL); // создаем компоненты m_effectMaster = new EffectMaster(); m_weaponMaster = new WeaponMaster(this); m_drive = new WanderingDrive(this); m_armor = new BaseArmor(); // основной стрелковый радар LineRadar radar = new LineRadar(this); radar.SetRadarRadius(SearchingRadius); m_radars.Add(radar); // дополнительный радар для гранат GrenadeRadar gRadar = new GrenadeRadar(this); // считаем дистанцию полёта гранаты, это необходимо для настройки гранатного радара GameObject grenade = ObjectLibrary.GetInstance().GetPrefab(Grenade.BulletType); GrenadeCtr gCtr = grenade.GetComponent <GrenadeCtr>(); int range = (int)(gCtr.FlyDistance / Base.SIZE_OF_CELL); gRadar.SetRadarRadius(range); gRadar.SetScaningArea(gCtr.ExplosionRadius); m_radars.Add(gRadar); InitializeUnit(); m_weaponMaster.SetWeapon(WeaponMaster.WeaponSlot.CLOSE_WEAPON, CloseWeapon); m_weaponMaster.SetWeapon(WeaponMaster.WeaponSlot.MAIN_WEAPON, Weapon); m_weaponMaster.SetWeapon(WeaponMaster.WeaponSlot.ADDITIONAL_WEAPON, Grenade); // настраиваем подключения компонент: // передача координат радару m_drive.PositionUpdate += radar.PositionUpdate; m_drive.PositionUpdate += gRadar.PositionUpdate; // передача данных о целях для стрельбы radar.RadarUpdate += m_weaponMaster.UpdateMainRadarData; // передача данных о целях для метания гранат gRadar.RadarUpdate += m_weaponMaster.UpdateAdditionalRadarData; // контроль движения при стрельбе m_weaponMaster.PauseDrive += m_drive.StopMoving; m_weaponMaster.ResumeDrive += m_drive.StartMoving; // событие смерти юнита m_armor.UnitIsDown += this.OnDead; // устанавливаем дефолтные значения SetDefaultParameter(); SetEffectsCollection(); }
/**********************************************************************************/ // инициализация // /**********************************************************************************/ void Start() { m_state = UNIT_STATE.ACTIVE; Weapon.SetUnitID(ID); Weapon.SetOwner((PLAYER)m_ownerID); // создаем компоненты m_effectMaster = new EffectMaster(); m_weaponMaster = new WeaponMaster(this); m_drive = new WanderingDrive(this); ShieldedArmor armor = new ShieldedArmor(gameObject); armor.SetShiledDuration(ShieldDuration); m_armor = armor; m_radar = new LineRadarBuilding(this); m_radar.SetRadarRadius(SearchingRadius); m_radars.Add(m_radar); InitializeUnit(); m_weaponMaster.SetWeapon(WeaponMaster.WeaponSlot.CLOSE_WEAPON, CloseWeapon); m_weaponMaster.SetWeapon(WeaponMaster.WeaponSlot.MAIN_WEAPON, Weapon); // настраиваем подключения компонент: // передача координат радару m_drive.PositionUpdate += m_radar.PositionUpdate; // передача данных о целях для стрельбы m_radar.RadarUpdate += m_weaponMaster.UpdateMainRadarData; // контроль движения при стрельбе m_weaponMaster.PauseDrive += m_drive.StopMoving; m_weaponMaster.ResumeDrive += m_drive.StartMoving; // событие смерти юнита m_armor.UnitIsDown += this.OnDead; // устанавливаем дефолтные значения SetDefaultParameter(); SetEffectsCollection(); }