box collider inside a box collider

I have two scripts that i use the first one is for a light switch button that toggles on and off, so it needs a box collider to make it functional, i also have another script that needs to go around the light switch, when its triggered it displays a gui saying “turn the light on” but when i enter the zone that tells me to “turn the light on” i cant turn the switch on, any ideas?

thanks

You could tick the second (biggest) collider as trigger and use OnTrigger function.

I’m guessing you are using a raycast to change the switch.

You could either use a layermask, and have your switches in a particular layer

or, since a regular raycast stops at the first collision,

use RayCastAll, in order to get all colliders on a given ray.
And parse through the list of colliders until you find one with a particular tag, name or script/component

I think the Unity Manual is actually wrong here. For example, the method OnCollisionStay says: “OnCollisionStay is called once per frame for every collider/rigidbody that is touching rigidbody/collider.”

I interpret this as OnCollisionStay should be called for every collider that my rigidbody/collider is touching. This is not the case for a scene with e.g. two boxcolliders (+ my rigidbody/collider) where one boxcollider defines a volume that is a proper subset of the other boxcollider. In such case (as far as my experiments go), OnCollisionStay will only be called for the outer/bigger boxcollider given that my rigidbody/collider is inside or touching both boxcolliders.