Critical damage to Ammo.

Good morning guys, so I’m trying to make the player’s ammo do critical damage.
So I made this code:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Munição : MonoBehaviour
{
    [SerializeField] float Speed;
   
    public int Dano = 1;

    public ParticleSystem Explosao_Tiro1;

    public float danoCritico;
   
    void Update()
    {
        transform.Translate(Vector3.up * Time.deltaTime * Speed);
    }

    void OnCollisionEnter2D(Collision2D collision)
    {
        if(collision.gameObject.CompareTag("Inimigo"))
        {  
            ChamarRandom();
            Destroy(gameObject);
            Instantiate(Explosao_Tiro1, transform.position, Quaternion.identity);
        }

        if(collision.gameObject.CompareTag("Parede"))
        {
            Destroy(gameObject);
            Instantiate(Explosao_Tiro1, transform.position, Quaternion.identity);
        }

        if(collision.gameObject.CompareTag("MuniçaoInimigo"))
        {
            Destroy(gameObject);
            Instantiate(Explosao_Tiro1, transform.position, Quaternion.identity);
        }
    }

    void ChamarRandom()
    {
        float randDroop = Random.Range (1, 100);

        if (randDroop <= danoCritico)
        {
            StartCoroutine("Critico");
        }
    }

    IEnumerator Critico()
    {
        Dano *= 2;
        yield return new WaitForSeconds(5f);
        Dano = 1;
    }
}

But it didn’t work, does anyone have any idea why it didn’t work?
Thank you very much in advance :slight_smile:

This is a very common thing we see on the forums but saying “it didn’t work” does not describe a problem. Please put some effort into describing what you want to happen in which part of the code and what actually happens.

Note: Please consider NOT using bold text in all your posts.

put your critical damage as a probability, like

float criticalChance = 30f;

//cal it at random probability
if (Random.Range(0,100f) < criticalChance)
{
//critical hit here
}