Hello all. I have a somewhat simple question that i can’t seem to figure out. I have two boxes; box a is red, box b is orange. Box A is smaller and will move towards box B and eventually overlap it until it is completely inside the bounds of box B. When box A is completely inside the bounds of box B and player touches down, box B will be destroyed, however if box A is overlapping the bounds of box B or completely outside of the bounds of box B then box B isn’t destroyed and nothing happens. Can anyone provide some help with scripting this? (preferably Javascript if possible)

This might be not the most correct way to do this, but I’d solved this by adding four triggers on the edges as a childs of a base square. You can add a script to them which will say when it triggered and in parent detect when all child triggers is triggered. Seems pretty awkward but should do the trick

Mesh mesh = GetComponent().mesh;

Vector3 vertices = mesh.vertices;

Transform orangeBox = GameObject.Find(“OrangeBox”);

BoxCollider bc = orangeBox.GetComponent();

Bounds bounds = bc.bounds;

foreach(Vector3 vec n vertices){

Vector3 worldPos = transform.TransformPoint(vec);

if(bounds.Contains(vec) == false){return false;}

}

return true;

You will have to test, I decompose the code to make it understandable, this is on the red cube.

You get the vertices of the red cube, then you find the orange cube, then its BoxCollider and finally its bounds. This should obviously be done in the Start so that you don’t repeat this process.

Then, iteration through all the vertices until we find one that is not within the boundaries but first the vertex needs to be converted to world space since the value is in local space. If they are all within, then we ran them all successfully and return true. If one is out, we return false.