From 1d74f3204692bb69aabf3c57fbdf4601a31a311f Mon Sep 17 00:00:00 2001 From: miepzerino <o.skotnik@gmail.com> Date: Sat, 16 Dec 2023 18:32:11 +0000 Subject: [PATCH] Added audio manager + sound effects --- Assets/Scripts/Damageable.cs | 42 +++++++++++++++++++++++++++++++++++++++++- 1 files changed, 41 insertions(+), 1 deletions(-) diff --git a/Assets/Scripts/Damageable.cs b/Assets/Scripts/Damageable.cs index d5ae844..09fa72f 100644 --- a/Assets/Scripts/Damageable.cs +++ b/Assets/Scripts/Damageable.cs @@ -1,12 +1,15 @@ +using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class Damageable : MonoBehaviour { +#if (UNITY_EDITOR) // ONLY FOR DEBUG USE [SerializeField] private bool selfDamage = false; +#endif Animator animator; [SerializeField] @@ -19,6 +22,10 @@ private bool isInvincible = false; private float timeSinceHit = 0f; public float invincibilityTime = 0.25f; + + public AudioClip hitSound; + public AudioClip healSound; + public AudioClip deathSound; public int MaxHealth { @@ -41,6 +48,10 @@ if (value <= 0) { IsAlive = false; + if (deathSound != null) + { + SoundManager.instance.PlaySoundAtPoint(gameObject, deathSound.name); + } } } } @@ -73,18 +84,47 @@ timeSinceHit += Time.deltaTime; } } +#if (UNITY_EDITOR) if (selfDamage) { Hit(10); } +#endif } public void Hit(int damage) { if (IsAlive && !isInvincible) { - Health -= damage; + int actualDamageAmount = Mathf.Min(damage, Health); + Health -= actualDamageAmount; isInvincible = true; + + CharacterEvents.characterDamaged.Invoke(gameObject, actualDamageAmount); + if (hitSound != null) + { + SoundManager.instance.PlaySoundAtPoint(gameObject, hitSound.name); + } } } + + public bool Heal(int healAmount) + { + bool result = false; + if (IsAlive && Health < MaxHealth) + { + int actualHealAmount = Mathf.Min(healAmount, MaxHealth - Health); + Health += actualHealAmount; + + CharacterEvents.characterHealed.Invoke(gameObject, actualHealAmount); + + result = true; + if (healSound != null) + { + SoundManager.instance.PlaySoundAtPoint(gameObject, healSound.name); + } + + } + return result; + } } -- Gitblit v1.9.3