When to use OnCollisionEnter and OnTriggerStay and how to use rigidbody.AddForce

Hi
Sorry for the long question title. I am trying to make a treadmill for a uni project. I want the treadmill/conveyor belt to move the player along its path and if the player tries to move with it they will speed up and against it they will slow down.

I have begun researching how to create this effect and I am having trouble and would like some help. I have found this previous question Conveyor belt physics - Unity Answers

and further research has lead me to something called rigidbody.AddForce. The AddForce sounds very ideal for what I am trying to achieve but my player (which is just a cube for now) just sits on top of my bigger cube (with the belt script attached to it) and moves when I was WASD as expected.

Even when I make my player Kinematic and go inside the belt and trigger my “touched” message to activate my player only moves when I press buttons and is not moving as intended.

If anyone can shed some light and help me achieve my results and help me understand why my attempts are failing, it would be a massive help. Thank you and here is my script…
using UnityEngine;
using System.Collections;

public class conveyorBelt : MonoBehaviour {
private Transform conveyorBelts;
private float beltSpeed;

// Use this for initialization
void Start () {
	conveyorBelts = transform;
	beltSpeed = 6.0f;
}

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

}
void OnTriggerStay( Collider other )
{
	print ("Touched");
 	other.rigidbody.AddForce(Vector3.left * Time.deltaTime * beltSpeed);
}


/*void OnTriggerEnter(Collider collider) {
		collider.rigidbody.AddForce(Vector3.left * Time.deltaTime * beltSpeed);
		print ("Touched");
	}*/
}

I’ll post this as an answer then haha, I’m glad you got it working ^^

This script works with a plane and a sphere with a rigidbody, both with colliders. However the sphere rolls with this set up which wouldn’t happen on a conveyor. To get rid of this create a Physic Material and set the static and dynamic friction to 0. Apply this Physic Material to the plane and you should have something similar to a conveyor

Here is the code :

using UnityEngine;
using System.Collections;
 
//Class to act as a conveyor belt
public class Conveyor : MonoBehaviour
{
    //Public Variables
    public float speed;
 
    void OnCollisionEnter(Collision other)
    {
        other.rigidbody.drag = 0;
        other.rigidbody.AddForce(Vector3.left * speed);
    }
 
    void OnCollisionExit(Collision other)
    {
        other.rigidbody.drag = 1;
    }
}