Using RayCast to Get Mouse Input

I am really frustrated, so much so that I am going to ask this last question and walk away from the computer and wait. I'm trying to use raycasts to get the current mouse position at a click. For now, I'm instantiating an object as a debugger. Here's my code:

var particle : GameObject;
function Update () {
if (Input.GetButtonDown ("Fire1")) {
// Construct a ray from the current mouse coordinates
var ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast (ray)) {
// Create a particle if hit
Instantiate (particle, transform.position, transform.rotation);

Now, when I play the game, when I click, it instantiates the object right at the camera's position. What am I doing wrong? Any and all help appreciated.

Elliot Bonneville

You say to instantiate at transform.position, which is the camera's position (I'm assuming your script is attached to the camera). You need to create a RaycastHit variable and use the position where the raycast actually hits.

var hit : RaycastHit;
if (Physics.Raycast (ray, hit)) {
// Create a particle if hit
Instantiate (particle, hit.point, transform.rotation);

That will still use the camera's rotation; probably you want to use Quaternion.identity instead.