/// <summary> Отбрасывает указанную цель, лишает книнематичного состояния и добавляет влияние гравитации </summary> void Explode(Destructable_Object target) { Rigidbody rb; rb = Find_RB(target); rb.isKinematic = false; rb.useGravity = true; rb.AddExplosionForce(explode_force, transform.position, radius); }
void OnTriggerEnter(Collider collider) { Destructable_Object obj = collider.transform.GetComponent <Destructable_Object>(); if (obj != null) { obj.Damage(dmg); Destroy(gameObject); } }
/// <summary> Наносит вред указанному разрушаемому объекту </summary> void Damage(Destructable_Object target, int damage) { if (target != null) { if (Can_Damage(target)) //Если этому объекту разрешено наносить вред { if (target.TakeDamage(damage)) //Наносим вред, если объект в итоге полностью разрушен { Add_Score(); //Добавляем очки хозяину снаряда } } } }
/// <summary> Наносит урон указанной цели </summary> void Damage_To(Destructable_Object target) { Vector3 distance; int damage; bool is_destroy; if (Can_Damage(target)) { distance = target.transform.position - transform.position; damage = Get_Damage(distance.magnitude); is_destroy = target.TakeDamage(damage); if (is_destroy) { owner.score += score; } } }
/// <summary> Возвращает true если снаряду разрешено наносить урон указанному объекту </summary> public bool Can_Damage(Destructable_Object target) { return(target.gameObject != owner.gameObject); //Разрешаем наносить урон всем, кроме хозяина снаряда }
/// <summary> Находит Rigidbody </summary> static Rigidbody Find_RB(Destructable_Object destructable) { return(destructable.GetComponent <Rigidbody>()); }