Beispiel #1
0
 public override void Death(bool isEffect, bool isDivide, bool isCoin, bool isProp)
 {
     if (isDivide)
     {
         Divide("SlowDownVirus", OriginColorLevel, 2);
     }
     base.Death(isEffect, isDivide, isCoin, isProp);
     if (_forceLine != null)
     {
         Pools.Despawn(_forceLine.gameObject);
         _forceLine = null;
     }
     VirusGameMrg.Instance.VirusPlayer.RemoveDecelerate(this);
     Pools.Despawn(gameObject);
 }
Beispiel #2
0
        protected override void RunAway()
        {
            _rotateTransform.localEulerAngles += new Vector3(0, 0, 50 * Time.deltaTime);
            bool b1 = VirusGameMrg.Instance.VirusPlayer != null && VirusGameMrg.Instance.VirusPlayer.gameObject.activeSelf;

            if (b1)
            {
                Transform slowTransform = VirusGameMrg.Instance.VirusPlayer.SlowTransform;
                Vector3   offset        = transform.position - slowTransform.position - new Vector3(0, 0.85f, 0);
                bool      b             = offset.sqrMagnitude < _slowDownRadius * _slowDownRadius;
                if (b)
                {
                    if (_forceLine == null)
                    {
                        var line = EffectPools.Instance.Spawn("ForceLine");
                        _forceLine = line.GetComponent <VirusForceLineEffect>();
                        _forceLine.UpdateLine(transform, slowTransform);
                    }
                    else
                    {
                        _forceLine.UpdateLine(transform, slowTransform);
                    }
                    VirusGameMrg.Instance.VirusPlayer.AddDecelerate(this);
                }
                else
                {
                    if (_forceLine != null)
                    {
                        Pools.Despawn(_forceLine.gameObject);
                        _forceLine = null;
                    }
                    VirusGameMrg.Instance.VirusPlayer.RemoveDecelerate(this);
                }
            }
            else
            {
                if (_forceLine != null)
                {
                    Pools.Despawn(_forceLine.gameObject);
                    _forceLine = null;
                }
            }
        }