//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; } }
[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)); }
//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; } }
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); }