- Home /
How to instantiate the prefabs on grid in Unity?
I've tried to create the gameObject such as 'cube' on Input.mousePosition. I mean, whatever gameObject or prefabs are instantiated when i click any position on screen and it worked very well. However, what i really want to do is that the gameObject or prefabs are instantiated on specified area so i'm struggling with panel and grid to figure out. No matter how to do, I just want to create cloned gameObject on Input.mousePosition in specified area. Is there a way to restrict the size of screen or to resize the grid (ex. 1/4 of panel and bottom left). Please let me knot how to figure it out. Thank you.
This is the code what i've done below.
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class point : MonoBehaviour
{
public GameObject particle;
Ray ray;
RaycastHit hit;
public Vector2 pos1;
void Start () {
}
void Update (){
Vector3 mousePos=new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0f);
if (Input.GetMouseButtonDown (0)) {
pos1 = new Vector2 (Input.mousePosition.x, Input.mousePosition.y);
//Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
Debug.Log (Input.mousePosition.x);
Debug.Log (Input.mousePosition.y);
Vector3 wordPos;
Ray ray=Camera.main.ScreenPointToRay(mousePos);
if(Physics.Raycast(ray,out hit,1000f)) {
wordPos=hit.point;
} else {
wordPos=Camera.main.ScreenToWorldPoint(mousePos);
}
Instantiate(particle,wordPos,Quaternion.identity);
}
}
}
What kind of grid is this? Is it made out of GameObjects?
Answer by abi-kr01 · Jan 21, 2015 at 12:15 PM
place a cube in the area where you want to generate your gameObject
Vector3 wordPos;
Ray ray=Camera.main.ScreenPointToRay(mousePos);
if(Physics.Raycast(ray,out hit,1000f))
{
wordPos=hit.point;
if(hit.collider.name=="grid ")
{
Instantiate(particle,wordPos,Quaternion.identity);
print("Cube placed");
}
}
else
{
wordPos=Camera.main.ScreenToWorldPoint(mousePos);
}
no need to check else but if you want to restrict the generation with position then you can use simple if else like
if((wordPos.x>100 && wordPos.x<300)&&(wordPos.y>100 && wordPos.y<300))
{
Instantiate(particle,wordPos,Quaternion.identity);
print("Cube placed");
}
else
{
Print("dont do anything");
}
Your answer
Follow this Question
Related Questions
remove and replace item in grid 1 Answer
Why does this script spawn 13 ClickEffect prefabs instead of 1? 2 Answers
Help, can't get Grid to instantiate in the center of the screen 0 Answers
Need Help With 2D Array Grid Position Tracking With JavaScript 1 Answer
instantiate prefabs y+1 from last instintiated prefab 1 Answer