Using the increasing and decreasing value function to deal damage

Hi, I’m new to unity c# scripting here, I’m currently making a catapult game and wonder if it’s there any idea on how to transfer the increasing and decreasing damage value on every second to deal damage? I want my character to deal max damage after charging up the damage by holding the left mouse button for 2 seconds and if I let go the button, the damage will decrease to 5 under 2 seconds. Here is my code:,Hi, I’m pretty new to unity c# scripting here. I’m currently making a catapult game and wonder if it’s there any idea on how to transfer the increasing and decreasing damage value on every second to public int attackDamage? I want my player to deal max damage after holding left mouse button for 2 seconds and then if I let go the mouse button, the damage value will decrease under 2 seconds. This is my code:

public class PlayerDamage : MonoBehaviour
{

public float damage = 5;
public float valueToIncreaseEverySecond = 1;
public float maxDamage = 90;
public float cooldownTime = 2f;
private float nextChargingTime;

public int attackDamage = 5;
public int playerHealth = 500;

private void Update()
{
    if (Input.GetMouseButton(0))
    {
        if (damage < maxDamage)
        {
            damage += valueToIncreaseEverySecond * Time.deltaTime;
        }
        else
        {
            damage = maxDamage;
        }
    }

    else
    {
        if (damage > 5)
        {
            damage -= valueToIncreaseEverySecond * Time.deltaTime;
        }
        else
        {
            damage = 5;
        }
    }

    if (Time.time > nextChargingTime)
    {
        if (Input.GetMouseButtonUp(0))
        {
            print("ability cooldown started");
            nextChargingTime = Time.time + cooldownTime;
        }
    }
}

public void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.collider.gameObject.CompareTag("Enemies"))
    {
        collision.collider.gameObject.GetComponent<Enemy>().TakeDamage(attackDamage);
    }
    
}

}

public int attackDamage = 5;
private int maxDamage = 90;
public int playerHealth = 500;
public int initialAttackDamage;
public float countdownTimer = 2f;
private float initialCountdownTimer;
public bool isFiring;

    private void Start()
    {
        initialCountdownTimer = countdownTimer;
        initialAttackDamage = attackDamage;
    }
    private void Update()
    {
        if (Input.GetMouseButtonDown(0))
            attackDamage = initialAttackDamage;
        if (Input.GetMouseButton(0))
        {

            if (countdownTimer > 0)
                countdownTimer -= Time.deltaTime;
            if (countdownTimer < 0)
                countdownTimer = 0;
            isFiring = true;
        }
        if (Input.GetMouseButtonUp(0) && isFiring)
        {
            attackDamage += Mathf.RoundToInt((1f - countdownTimer / initialCountdownTimer) * maxDamage);
            countdownTimer = initialCountdownTimer;
            isFiring = false;
        }
    }
    public void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.collider.gameObject.CompareTag("Enemies"))
        {
            collision.collider.gameObject.GetComponent<Enemy>().TakeDamage(attackDamage);
        }

    }

}

Hello, thanks for the reply. I’ve tried your script, but is it possible to set the max damage and for some reason the enemies doesn’t take damage at all.