protected override void RunAway() { LayerMask layerMask = 1 << LayerMask.NameToLayer("Virus"); var coliders = Physics2D.OverlapCircleAll(transform.position, _vampireRadius, layerMask); List <BaseVirus> list = new List <BaseVirus>(); for (int i = 0; i < coliders.Length; i++) { var cc = coliders[i].GetComponent <BaseVirus>(); bool b1 = cc is VampireVirus; if (!b1) { list.Add(cc); } } if (list.Count > 0) { int index = Random.Range(0, list.Count); if (list[index] != null) { _isVampire = true; _targetVirus = list[index]; var line = EffectPools.Instance.Spawn("VampireLine"); _vampireLine = line.GetComponent <VampireLine>(); _vampireLine.UpdateLine(transform, _targetVirus.transform, false); } } }
public void MinusVirusCount(BaseVirus virus) { VirusName n = (VirusName)Enum.Parse(typeof(VirusName), virus.name); int count = VirusTool.GetSplit(virus.SplitLevel, n); _originCount -= count; }
public void AddDecelerate(BaseVirus baseVirus) { if (!_forceViruses.Contains(baseVirus)) { _playerMove.Decelerate(); _forceViruses.Add(baseVirus); } }
private void Start() { _activeEffects = new List <VirusAddLevelEffect>(); _cacheBools = new Dictionary <ICure, bool>(); _duration = 0.25f; _baseVirus = transform.GetComponent <BaseVirus>(); }
public override void Born(VirusData virusData) { base.Born(virusData); _totalTime = 0; _runAwayDuration = 3f; _vampireDuration = 5f; _targetVirus = null; }
private void StopVampire() { if (_vampireLine != null) { EffectPools.Instance.DeSpawn(_vampireLine.gameObject); _vampireLine = null; } _targetVirus = null; StopCure(this); }
public void RemoveDecelerate(BaseVirus baseVirus) { if (_forceViruses.Contains(baseVirus)) { _forceViruses.Remove(baseVirus); } if (_forceViruses.Count == 0) { _playerMove.Recover(); } }