- Home /
How to instantiate a prefab at mouse pos
Does anyone know how to instantiate a prefab at the mouse pos on screen? (Preferably on a grid pattern) The script I use doesn't do anything when I click.
var Block:GameObject;
function Update ()
{
if (Input.GetButtonDown ("Fire1"))
{
var mousePos = Input.mousePosition;
mousePos.z = -12.48309; // we want -12m away from the camera position
var objectPos = Camera.main.ScreenToWorldPoint(mousePos);
Instantiate(Block, objectPos, Quaternion.identity);
}
}
Answer by LumenTelum · Nov 08, 2013 at 10:36 PM
Looks like you were very close, your object is probably behind the camera. You should be able to see a new object show up in the hierarchy, try changing the mousePos.z to a positive value, making sure it is larger than the camera's near plane.
var Block:GameObject;
function Update ()
{
if (Input.GetButtonDown ("Fire1"))
{
var mousePos = Input.mousePosition;
mousePos.z = 12.48309;
var objectPos = Camera.main.ScreenToWorldPoint(mousePos);
Instantiate(Block, objectPos, Quaternion.identity);
}
}
@LumenTelum that worked but now I get a
NullReferenceException: Object reference not set to an instance of an object PlaceBlock.Update () (at Assets/Folders/Scripts/PlaceBlock.js:10)
In the console when I have somtheing assigned to the block variable. Thats also prob why it doesn't show up in the game.
Ah, I assumed you already had that setup as you didn't mention a NullReferenceException in your original post. I also assumed you had the script added as a component to a game object, such as the camera, but it just wasn't showing up in front of your camera as you expected. I'll try to not make so many assumptions next time. Good luck with your project.
Your answer
Follow this Question
Related Questions
How can I create a grid for a Leveleditor? 1 Answer
Where do i put this script??? 4 Answers
Adding Imperfections? 1 Answer
Instantiate prefab within parameters?(Javascript) 1 Answer
Placing static prefabs on click 2 Answers