61 lines
1.3 KiB
C#
61 lines
1.3 KiB
C#
using System;
|
|
using UnityEngine;
|
|
using Object = System.Object;
|
|
|
|
public class DamageHandler : MonoBehaviour
|
|
{
|
|
public float threshold = 2.5f;
|
|
public float multiplier = 0.5f;
|
|
|
|
public float maxHealth = 1f;
|
|
public float health;
|
|
public float minSize = 0.4f;
|
|
|
|
|
|
private void Start()
|
|
{
|
|
threshold = 2.5f;
|
|
multiplier = 0.5f;
|
|
|
|
maxHealth = 1f;
|
|
minSize = 0.4f;
|
|
health = maxHealth;
|
|
}
|
|
|
|
private void OnCollisionEnter2D(Collision2D other)
|
|
{
|
|
float fallSpeed = GetComponent<Rigidbody2D>().linearVelocityY;
|
|
if (fallSpeed > threshold)
|
|
{
|
|
float fallDamage = (fallSpeed - threshold) * multiplier;
|
|
Debug.Log($"Fell with velocity:{fallSpeed}. Fall damage{fallDamage}");
|
|
UpdateHealth(health - fallDamage);
|
|
// Debug.Log($"New health:{health - fallDamage}");
|
|
}
|
|
else
|
|
{
|
|
Debug.Log($"Fell with velocity:{fallSpeed}. No fall damage");
|
|
}
|
|
}
|
|
|
|
public void UpdateHealth(float health)
|
|
{
|
|
this.health = health;
|
|
Transform transform = GetComponent<Transform>();
|
|
float healthScaling = minSize + (1 - minSize) * (this.health / maxHealth);
|
|
transform.localScale = new Vector3(healthScaling,healthScaling,healthScaling);
|
|
Debug.Log("UpdatedScale and health");
|
|
|
|
if(this.health <= 0f)
|
|
{
|
|
Debug.Log("Die");
|
|
Die();
|
|
}
|
|
}
|
|
|
|
public void Die()
|
|
{
|
|
Destroy(gameObject);
|
|
}
|
|
}
|