//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;
            }
        }
Beispiel #2
0
        [SerializeField] private BulletProjector _projector;         //todo manager

        public virtual void SetDamage(InfoCollision info)
        {
            if (_projector == null)
            {
                return;
            }
            var projectorRotation = Quaternion.FromToRotation(-Vector3.forward, info.Contact.normal);
            var obj = Instantiate(_projector, info.Contact.point + info.Contact.normal * 0.25f, projectorRotation, info.ObjCollision);             // manager

            obj.transform.rotation = Quaternion.Euler(obj.transform.eulerAngles.x, obj.transform.eulerAngles.y, Random.Range(0, 360));
        }
Beispiel #3
0
        //todo дописать поглащение урона
        public void SetDamage(InfoCollision info)
        {
            if (_isDead)
            {
                return;
            }
            if (Hp > 0)
            {
                Hp -= info.Damage;
            }

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

                OnPointChange?.Invoke();
                _isDead = true;
            }
        }
Beispiel #4
0
 public void SetDamage(InfoCollision info)
 {
     OnApplyDamageChange?.Invoke(new InfoCollision(info.Damage * 500, info.Contact, info.ObjCollision, info.Dir));
 }
 public void SetDamage(InfoCollision info)
 {
     OnApplyDamageChange?.Invoke(info);
 }