How can you detect which object in a 3D scene is at a given screen pixel position? Say, when the user clicks the mouse and you want to know which scene object was clicked on. This is more complicated in 3D than 2D because the screen image is a "flattened" view of the 3D space, and so each screen point corresponds to a line in the game world. These lines diverge outward into the scene and they all actually originate from the camera's location. Mercifully, the Unity Camera class contains a function, ScreenPointToRay, that calculates the direction of a line corresponding to a screen position for the given camera. This line, in the form of a Ray object, can then be passed to Physics.Raycast. This function searches along the line from its origin until it makes contact with an object. The object returned by Physics.Raycast (in the RaycastHit parameter) is the object at the original screen position. It probably sounds more difficult than it really is. I've attached an example script in C# and JS versions to illustrate how the raycast is done. The RaycastHit structure actually contains several useful pieces of information about the object that was hit, including the exact point in space where the contact occurred. Note that in C#, you need to call Physics.Raycast with the "out" keyword in front of the RaycastHit parameter. This is because the function returns data back to you in this parameter.