box colliders do face detection?

If a raycast hits a box collider, does it return which face of the box it hit? If so, how do I get this information? If a raycast hits a box collider and returns which face it hit, does it return WHERE on the face it hit? If so, how do I get this information?

For a missile, aimed at an object with a box collider on it, what is the best method of determining IF the missile has hit, and WHERE on the box collider it's hit? Is it sending a raycast and somehow timing it with the arrival of the missile at the target, or using a collider on the missile and the target?

Assuming "hit" is a RaycastHit, you can use `hit.transform.InverseTransformPoint(hit.point)` to get the local position of the raycast hit. From that you can determine which face was hit and where. Actual mesh information is not available unless you use a mesh collider.

If you want to do something like launch an object from whichever face of the cube was hit, all you need is info from the RaycastHit, since you don't actually care what face was hit per se, and you don't need to use InverseTransformPoint:

// Instantiate a prefab at the center of the cube,
// and orient it by the normal of the hit point
var clone = Instantiate(prefab,
                        hit.transform.position,
                        Quaternion.FromToRotation(Vector3.forward, hit.normal));
// Move it forward along its z axis by a certain amount
clone.transform.Translate(Vector3.forward * distanceFromCenter);
// Get it moving in its forward direction
clone.rigidbody.AddRelativeForce(Vector3.forward * forceAmount);

Where `distanceFromCenter` and `forceAmount` would be defined as public variables like this:

var distanceFromCenter = 2.0;
var forceAmount = 50.0;

For a missile, use `OnCollisionEnter (other : Collision)`, where "other" contains Collision.contacts, which contains a ContactPoint array of the collision.