Exemple #1
0
        // дописать поглащение урона
        public void SetDamage(InfoCollision info)
        {
            if (_isDead)
            {
                return;
            }
            if (Hp > 0)
            {
                Hp -= info.Damage;
            }

            if (Hp <= 0)
            {
                var tempRigidbody = GetComponent <Rigidbody>();
                if (!tempRigidbody)
                {
                    tempRigidbody = gameObject.AddComponent <Rigidbody>();
                }
                tempRigidbody.velocity = info.Dir;
                Destroy(gameObject, 10);

                OnPointChange?.Invoke();
                _isDead = true;
            }
        }
Exemple #2
0
    public void OnCollision(InfoCollision info)
    {
        if (_isDead)
        {
            return;
        }
        if (HP > 0)
        {
            HP -= info.Damage / _healthDivider;
        }

        if (HP <= 0)
        {
            if (!TryGetComponent <Rigidbody>(out _))
            {
                gameObject.AddComponent <Rigidbody>();
            }
            var rb = gameObject.GetComponent <Rigidbody>();
            rb.isKinematic = false;
            rb.useGravity  = true;
            Destroy(gameObject, _timeToDestroy);

            OnPointChange.Invoke();
            _isDead = true;
        }
    }
Exemple #3
0
        //todo дописать поглащение урона - done
        public void SetDamage(InfoCollision info)
        {
            if (_isDead)
            {
                return;
            }

            float damage = info.Damage / Shield;

            if (Armor > 0)
            {
                Armor -= damage;
            }

            if (Armor <= 0 && Hp > 0)
            {
                Hp -= damage;
            }

            if (Hp <= 0)
            {
                if (!TryGetComponent <Rigidbody>(out _))
                {
                    gameObject.AddComponent <Rigidbody>();
                }
                Destroy(gameObject, 10);

                OnPointChange?.Invoke();
                _isDead = true;
            }
        }
Exemple #4
0
        public void SetDamage(InfoCollision info)
        {
            if (_isDead)
            {
                return;
            }

            if (Hp > 0)
            {
                Hp -= info.Damage;
            }

            _meshRenderer.material.color = Color.Lerp(Color.gray, _initialColor, Hp / _initialHp);

            if (Hp <= 0)
            {
                var tempRigidbody = GetComponent <Rigidbody>();
                if (!tempRigidbody)
                {
                    tempRigidbody = gameObject.AddComponent <Rigidbody>();
                }
                tempRigidbody.velocity = info.Dir;
                Destroy(gameObject, 10);

                OnPointChange?.Invoke();
                _isDead = true;
            }
        }
Exemple #5
0
        //private void GettingPeriodicDamage(in InfoCollision info)
        //{
        //    _timeRemaining = new TimeRemaining(Burning, _timeBurning, true);
        //}

        //private void Burning()
        //{
        //    var fireEffect = ServiceLocator.Resolve<EffectController>().GetFireEffect();
        //    if (fireEffect)
        //    {
        //        fireEffect.transform.SetParent(transform);
        //    }
        //}

        private void GettingMomentDamage(InfoCollision info)
        {
            if (Hp > 0)
            {
                Hp -= info.Damage;
                switch (info.Effect)
                {
                case EffectType.Fire:
                    gameObject.transform.GetComponent <Renderer>().material.color = Color.red;
                    break;

                case EffectType.Frost:
                    gameObject.transform.GetComponent <Renderer>().material.color = Color.blue;
                    break;
                }
            }

            if (Hp <= 0)
            {
                if (!TryGetComponent <Rigidbody>(out _))
                {
                    gameObject.AddComponent <Rigidbody>();
                }

                Destroy(gameObject, _timeToDestroy);

                OnPointChange.Invoke();
                _isDead = true;
            }
        }
Exemple #6
0
        public void SetDamage(InfoCollision info)
        {
            if (_isDead)
            {
                return;
            }
            if (Hp > 0)
            {
                Hp -= info.Damage;
            }

            if (Hp <= 0)
            {
                _isDead = true;
                Color   = new Color(0.7f, 0.1f, 0.1f);

                _agent.enabled           = false;
                _character.enabled       = false;
                _rigidBody.useGravity    = true;
                _capsuleCollider.enabled = true;
                _rigidBody.velocity      = info.Dir;

                Layer = 11;

                Destroy(gameObject, 5);

                OnPointChange?.Invoke();
            }
        }
Exemple #7
0
        public override void SetDamage(InfoCollision info)
        {
            if (_isDead)
            {
                return;
            }
            if (Hp > 0)
            {
                Hp -= info.Damage;
            }

            if (Hp <= 0)
            {
                Hp = 0;
                if (!TryGetComponent <Rigidbody>(out _))
                {
                    gameObject.AddComponent <Rigidbody>();
                }
                Destroy(gameObject, 10);

                OnPointChange?.Invoke();
                _isDead = true;
            }
            StatusChange();
        }
        //todo дописать поглащение урона
        public void SetDamage(InfoCollision info)
        {
            float damage = info.Damage / Armor;

            if (_isDead)
            {
                return;
            }

            if (Defense > 0)
            {
                Defense -= damage;
            }
            else if (Hp > 0)
            {
                Hp -= damage;
            }

            if (Hp <= 0)
            {
                if (!TryGetComponent <Rigidbody>(out _))
                {
                    gameObject.AddComponent <Rigidbody>();
                }
                Destroy(gameObject, 10);

                OnPointChange?.Invoke();
                _isDead = true;
            }
        }
Exemple #9
0
        public void CollisionEnter(InfoCollision info)
        {
            if (_isDead)
            {
                return;
            }

            if (!TryGetComponent <Rigidbody>(out _))
            {
                gameObject.AddComponent <Rigidbody>();
            }



            OnPointChange.Invoke();
            _isDead = true;
        }
Exemple #10
0
        //todo дописать поглащение урона
        public void CollisionEnter(InfoCollision info)
        {
            if (_isDead)
            {
                return;
            }
            if (Hp > 0)
            {
                Hp -= info.Damage;
            }

            if (Hp <= 0)
            {
                if (!TryGetComponent <Rigidbody>(out _))
                {
                    gameObject.AddComponent <Rigidbody>();
                }
                Destroy(gameObject, _timeToDestroy);

                OnPointChange.Invoke();
                _isDead = true;
            }
        }
Exemple #11
0
        //todo дописать поглащение урона
        public void SetDamage(InfoCollision info)
        {
            if (_isDead)
            {
                return;
            }
            if (Armor > 0)
            {
                if (Armor > info.Damage)
                {
                    Armor -= info.Damage;
                    return;
                }
                else
                {
                    Hp   -= (info.Damage - Armor);
                    Armor = 0;
                }
            }
            if (Hp > 0)
            {
                Hp -= info.Damage;
            }

            if (Hp <= 0)
            {
                if (!GetComponent <Rigidbody>())
                {
                    gameObject.AddComponent <Rigidbody>();
                }
                Destroy(gameObject, 10);

                OnPointChange?.Invoke();
                _isDead = true;
            }
        }
Exemple #12
0
 protected override void Interaction()
 {
     OnPointChange?.Invoke(point);
 }
Exemple #13
0
 protected override void Interaction()
 {
     Point++;
     OnPointChange.Invoke(Point);
     _bonus?.Invoke();
 }
Exemple #14
0
 public void HandleOnPointChange()
 {
     OnPointChange.Invoke(this);
 }