public void OnTriggerEnter2D(Collider2D col) { if (!col.isTrigger) { if (col.CompareTag(targetTag)) { I_Killable killable = col.GetComponentInParent <I_Killable>(); if (!killable.IsInvicible()) { float targetLife = killable.GetLife(); killable.TakeDamage(damage); damage -= targetLife; float coef = damage / maxDamage; transform.localScale = startScale * coef; if (damage <= 0) { DestroyBullet(); } } } else if (col.CompareTag("Environment")) { DestroyBullet(); } } }
public void OnTriggerEnter2D(Collider2D col) { if (!col.isTrigger) { if (col.CompareTag(targetTag)) { I_Killable killable = col.GetComponentInParent <I_Killable>(); if (!killable.IsInvicible()) { killable.TakeDamage(damage); } DestroyBullet(); } else if (col.CompareTag("Environment")) { DestroyBullet(); } } }
private void CheckTrajectory() { for (int i = 0; i < trajectory.Count; i++) { Vector2 origin = trajectory[i]; Vector2 direction; if (i + 1 < trajectory.Count) { direction = trajectory[i + 1] - trajectory[i]; } else { direction = new Vector2(transform.position.x, transform.position.y) - trajectory[i]; } RaycastHit2D[] hits = Physics2D.CircleCastAll(origin, lenght, direction, direction.magnitude, layer); List <I_Killable> targets = new List <I_Killable>(); foreach (RaycastHit2D hit in hits) { foreach (string tag in tags) { if (hit.collider.CompareTag(tag)) { I_Killable target = hit.collider.GetComponent <I_Killable>(); if (!targets.Contains(target)) { targets.Add(hit.collider.GetComponent <I_Killable>()); } } } } foreach (I_Killable target in targets) { target.TakeDamage(damage); } } }