Trigger a color change via collide

I have been trying to find a simpler solution. I have setup just using a cube with a character controller and cubes with box colliders.

The objective is that I can change my player cube to red green and blue and the other cubes with the box colliders can be red blue or green and when i jump on them I want them to change to the clear color if i’m not the same color and if I am the same color they turn back to their color if not already that color.

I tried attaching a rididbody to my player cube to use the oncollision functions but it never actually happens unless i attatch a box collider to the player cube as well making it have a total of a box collider, rigid body and a character controller. it also causes the cube to totally flip out but if i get it to touch another cube it triggers on the oncollision even. also if i make the cubes be triggers i can use the on trigger event but then my cubes that i want to jump on don’t collide so the only solution I found that makes gameplay work is that I add a sphere collider to the cubes i want to jump on, in addition to the box collider so that I can use the sphere as a trigger to change the cubes and still collide with them.

It seems like a lot of extra work since there is obviously some detection going on already that i am colliding with the objects if the collision works.

Game demo here <<<<<

here is a link to the project of what i got so far. arrow keys move left and right , space jumps , and changing colors is z = red x = green c = blue