Collision only counted first time

I’m trying to follow a tutorial, in which the player is supposed to navigate a ball around a room, and hit all the cubes. Each time you hit a cube, the score counter should display one number higher. Here’s the script I’ve applied to all the cubes:

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

public class DoggyStyle : MonoBehaviour {
    public int speed=1;
    public int counter=2;
    public Text counting;
	// Use this for initialization
	void Start () {

    }
    // Update is called once per frame
    void Update () {
        transform.Rotate(new Vector3(15, 30, 45) * Time.deltaTime*speed);
	}
    public void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.CompareTag("Player"))
        {
            counter= counter+ 1;
            counting.text = "Score:"+counter; 
            GetComponent<Collider>().isTrigger = false;
            speed = 0;
            GetComponent<Rigidbody>().isKinematic = false;
            GetComponent<Rigidbody>().useGravity = true;

        }
    }
}

Everything about it except the counting seems to work. I’ve got four cubes right now, with the script applied to their prefab. When I test the game, the counter only goes up for the first cube that I hit, after which it doesn’t change. How do I fix this?

You have the counter on the cube, not on the ball. Shouldn’t it be on the ball? The way you have it here, when you hit a cube, the cube’s counter will increase by one, but then you’re disabling the trigger, so you’ll never hit OnTriggerEnter again.

It sounds like you want you want to call something like other.gameObject.GetComponent<Ball>() (or whatever script is on your ball), and put a counter on your Ball script, and increment that.