From a9cef4bb0b902e3ec2d3b5510e3de4e885f2be90 Mon Sep 17 00:00:00 2001 From: SmallFox <2806143047@qq.com> Date: Sun, 10 May 2026 11:16:18 +0800 Subject: feat:合并伤害体积 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/DamageVolumeSystem/SimpleHealth.cs | 55 +++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 Assets/Scripts/DamageVolumeSystem/SimpleHealth.cs (limited to 'Assets/Scripts/DamageVolumeSystem/SimpleHealth.cs') diff --git a/Assets/Scripts/DamageVolumeSystem/SimpleHealth.cs b/Assets/Scripts/DamageVolumeSystem/SimpleHealth.cs new file mode 100644 index 0000000..c301d4a --- /dev/null +++ b/Assets/Scripts/DamageVolumeSystem/SimpleHealth.cs @@ -0,0 +1,55 @@ +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); + } + } +} -- cgit