ERMAGERD I SOLVED IT.
Finally, this one, was a hard one.
I had to do some googling to find the solution.
So, before the fix, I would use colliders, then use OnTriggerEnter, to color the outline Cyan, set so you can pickup the object etc.
The problem with that was, incase 2 batteries was close to eachother, and you pickedup one of them, the collider for the battery you picked up, didnt get exited, which basically means that you had to go away a bit, to pickup the next one.
So, I changed the system completely.
(There is a better way to do this, and it is not optimized, was in a rush.)
Started by adding a bunch of variables:

Then, I imported the pllayer transform and gameobject:

After that, I removed the OnTrigger methods, and have it all in the void Update() method.
Basicially, what the code does is that it uses Vector3.Distance, to see the distance between the battery and the player.
Then, if the distance is below the range float, it would execute some code, then I added and else to the bottom, which basically tells the system, if its not within the range, don’t do anything.

Also I use OnMouseOver and OnMouseExit to make sure that the mouse needs to be on the object!
=)





It goes through a for loop (As there are multiple materials on the object, changing 1 material (gameObject.renderer.material.shader =blablabla), would just change like the top, the middle or the bottom part of the battery.












