- Home /
 
Duplicate Question
[Android]How to move an object and have it snap to grid?
Right now I have a script that moves the object I touch to where ever I move my finger. How would I get it to snap to a grid? Here is my script:
 #pragma strict
 var squareSize : float;
 function Start () {
 
 }
 
 function Update () {
 if(Input.touchCount > 0)
             {
             var hit : RaycastHit;
             var vektor = Vector3(Input.GetTouch(0).position.x,Input.GetTouch(0).position.y,0f);
             var ray : Ray = Camera.main.ScreenPointToRay (vektor);
             var coor = Vector3(vektor.x, vektor.y, 5f);
             var pos = Camera.main.ScreenToWorldPoint(coor);
             if (Physics.Raycast(ray, hit, Mathf.Infinity)) {
             hit.transform.position.x = pos.x;
             hit.transform.position.y = pos.y;
             }
             }
 }
 
               Any advice? Thanks in advanced.
You could store the grid positions in a 2D array and then check in update if the object is within a certain distance from the center of those positions.
Or
you could build a grid of box colliders and OnTriggerEnter, snap it to the center.
Answer by Cherno · Mar 19, 2014 at 12:40 AM
It's easy, you just find the nearest whole grid position to your raycast hit point by using Mathf.RoundToInt.
If the grid is in increments of 1:
 var touchedCoordsX : int = Mathf.RoundToInt(hit.point.x);
 var touchedCoordsY : int = Mathf.RoundToInt(hit.point.y);
 var touchedCoordsZ : int = Mathf.RoundToInt(hit.point.z);
 
 var gridCoords = Vector3(touchedCoordsX , touchedCoordsY , touchedCoordsZ );
 
 
              Follow this Question
Related Questions
Multiple Cars not working 1 Answer
TPS Camera with Joystick (Android) 0 Answers
Can someone help me fix my Javascript for Flickering Light? 6 Answers
Setting Scroll View Width GUILayout 1 Answer
BCE0049 error with network script 0 Answers