public void TakeDamage(int amount) { if (m_Flags.HasFlag(CombatFlags.Invulnerable)) { return; } m_CurrentHealth = Mathf.Max(m_CurrentHealth - amount, 0); m_HealthBar.Current = m_CurrentHealth; if (m_CurrentHealth <= 0) { m_Animator.enabled = false; m_HealthBar.Current = 0; m_Flags |= CombatFlags.Dead; if (!CompareTag("Player")) { GetComponent <StateController>().enabled = false; GetComponent <Collider>().enabled = false; // prevent targeting GetComponent <UnitController>().Stop(); if (!m_DeathAudioPlayed && TryGetComponent(out AudioSource audio)) { var gameMgr = FindObjectOfType <GameManager>(); var scoreText = gameMgr.m_ScoreText.GetComponent <TMP_Text>(); gameMgr.m_Score += 50; scoreText.text = gameMgr.m_Score.ToString(); audio.Stop(); audio.clip = m_Death[0]; audio.Play(); m_DeathAudioPlayed = true; } Destroy(gameObject, 5); } } }
internal static bool CheckCombatFlag(CombatFlags flag) { return((CombatType & flag) != 0); }