the point variable won't update but just keep showing up as 1

public class WhenCollide : MonoBehaviour
{

public int point = 0;

// Start is called before the first frame update
void Start()
{
    
}

// Update is called once per frame
void Update()
{

}

private void OnTriggerEnter(Collider other)
{
    if (other.CompareTag("Animal"))
    {
        point++;
        Destroy(gameObject);
        Destroy(other.gameObject);
        Debug.Log("total point: " + point);
    }
}

}

It seems that when you instantiate a gameobject with WhenCollide script, you simultaneously create separate point variable for each script. Let’s say you create 5 gameobjects with 5 different points. But you need a situation when you create 5 gameobjects, but you still have ONE variable point.
The easiest way is to create separate gameobject. Then create a script. Let’s call it GameManager and attach it to the gameobject. Static variable “point” will be accessible from each and every script with command GameManager.point and will act as ONE point.

public class GameManager : MonoBehaviour
{
	public static int point;
}

Now, in your OnTriggerEnter look at these lines:

point++;
Debug.Log("total point: " + point);

And change them to:

GameManager.point++;
Debug.Log("total point: " + GameManager.point);

You can do it also in many different ways, for example with Singleton pattern.