How do you make a game object appear were the cursor is

In my game I want it so the player can place blocks for the puzzle to be completed. I tried to just use the Instaniate and then the game object but that didn’t work since I needed to specify a position.I want it so the cursor would be in the spot and when they click the object will appear.

You can use a Raycast to get the position providing there is a collider under the cursor.

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    public GameObject particle;
    void Update() {
        if (Input.GetButtonDown("Fire1")) {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray))
                Instantiate(particle, transform.position, transform.rotation);
        }
    }
}

What do you mean by "There is a collider Under the cursor? " @karl_jones
I tried to use it but it didn’t work so I think its something to do with the collider you are talking about. I just don’t know how to apply a collider to a cursor.

You can instantiate the object at specified length from the ray.

This code will instantiate the object on the screen where the mouse is, but at a z axis coordinate equal to the absolute distance the camera is from zero. i.e it will have a z coordinate of zero.

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
			

			Vector3 position = (ray.origin + ray.direction * Mathf.Abs(Camera.main.transform.position.z));

			
			GameObject yourObject = Instantiate (thePuzzlePiece);

			yourObject.transform.position = position;