From bfd0ce923c5507859e9de49b210feca529b84add Mon Sep 17 00:00:00 2001 From: go38coz Date: Sat, 6 Jun 2026 16:05:21 +0200 Subject: [PATCH] fixed velocity handling for bounciness --- Game/Assets/Scripts/DamageHandler.cs | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/Game/Assets/Scripts/DamageHandler.cs b/Game/Assets/Scripts/DamageHandler.cs index 4bdd404..12fc907 100644 --- a/Game/Assets/Scripts/DamageHandler.cs +++ b/Game/Assets/Scripts/DamageHandler.cs @@ -4,6 +4,7 @@ using Object = System.Object; public class DamageHandler : MonoBehaviour { + private Rigidbody2D rb; public float threshold = 2.5f; public float multiplier = 0.5f; @@ -11,23 +12,35 @@ public class DamageHandler : MonoBehaviour public float health; public float minSize = 0.4f; + private float lastYVelocity; + + + private void Awake() + { + rb = GetComponent(); + } private void Start() { - threshold = 2.5f; - multiplier = 0.5f; + threshold = 10f; + multiplier = 0.1f; maxHealth = 1f; minSize = 0.8f; health = maxHealth; } + private void FixedUpdate() + { + lastYVelocity = rb.linearVelocityY; + } + private void OnCollisionEnter2D(Collision2D other) { - float fallSpeed = GetComponent().linearVelocityY; - if (fallSpeed > threshold) + float fallSpeed = lastYVelocity; + if (fallSpeed < -threshold) { - float fallDamage = (fallSpeed - threshold) * multiplier; + float fallDamage = (-fallSpeed - threshold) * multiplier; Debug.Log($"Fell with velocity:{fallSpeed}. Fall damage{fallDamage}"); UpdateHealth(health - fallDamage); // Debug.Log($"New health:{health - fallDamage}"); @@ -37,6 +50,7 @@ public class DamageHandler : MonoBehaviour Debug.Log($"Fell with velocity:{fallSpeed}. No fall damage"); } } + public void UpdateHealth(float health) {