- Home /
Question by
BZS · Jan 19, 2014 at 03:37 PM ·
javascriptinstantiategrid
Instantiate prefab on a grid pattern?
I have this code that works but how would I spawn the prefab only on a grid pattern? Here is the code:
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);
}
}
Any advice? Thanks in advanced.
Comment
Best Answer
Answer by nesis · Jan 19, 2014 at 03:55 PM
If you're wanting to lock the object to a grid, then you'd take objectPos after it's been set and the use Mathf.Round(), Mathf.Floor(), or Mathf.Ceil() on objectPos.x, objectPos.y, and objectPos.z... assuming you're wanting a grid of one metre squares, of course!
For a grid with squares of any size:
var Block:GameObject;
var squareSize : float = 1.0f;
function Update ()
{
if (Input.GetButtonDown ("Fire1"))
{
var mousePos : Vector3 = Input.mousePosition;
mousePos.z = 12.48309; //I'm not sure why you're setting this to such a specific value?
var objectPos : Vector3 = Camera.main.ScreenToWorldPoint(mousePos);
//now you've gotten objectPos' initial value,
//lock it to a nearby grid point
objectPos.x = Mathf.Round(objectPos.x/squareSize) * squareSize;
objectPos.y = Mathf.Round(objectPos.y/squareSize) * squareSize;
objectPos.z = Mathf.Round(objectPos.z/squareSize) * squareSize;
Instantiate(Block, objectPos, Quaternion.identity);
}
}
Your answer
Follow this Question
Related Questions
Can someone help me fix my Javascript for Flickering Light? 6 Answers
Setting Scroll View Width GUILayout 1 Answer
Instantiate at wrong position 1 Answer
OnTriggerEnter2D Rapid Fire 0 Answers