using System; using UnityEngine; namespace DamageVolumeSystem { [RequireComponent(typeof(Rigidbody))] public class SimpleHealth : MonoBehaviour { public int max = 10000; public int health = 10000; private Rigidbody _rigidbody; private void Start() { _rigidbody = GetComponent(); } public void Damage(Damage amount) { health -= amount.Force; health = Mathf.Clamp(health, 0, max); _rigidbody.AddForce(amount.Direction * amount.Force / 200); } public void Heal(Damage amount) { health += amount.Force; health = Mathf.Clamp(health, 0, max); } private void OnDrawGizmos() { var t = transform; var size = (t.lossyScale.x + t.lossyScale.y + t.lossyScale.z) / 3; Gizmos.matrix = t.localToWorldMatrix; Gizmos.DrawWireCube(new Vector3(0, size, 0), new Vector3( 2 / t.lossyScale.x, 0.5f / t.lossyScale.y, 0.5f / t.lossyScale.z ) * size); Gizmos.color = new Color(1f, 0.44f, 0.37f); Gizmos.DrawCube(new Vector3(0, size, 0), new Vector3( 2 / t.lossyScale.x * ((float) health / max), 0.5f / t.lossyScale.y, 0.5f / t.lossyScale.z ) * size * 0.8f); } } }