GridMove modification causing Unity to freeze

Hello, I took the GridMove script (http://www.unifycommunity.com/wiki/index.php?title=GridMove) and am trying to modify it to move according to mouse position. Here is my current script:

rivate var mouseButton1DownPoint : Vector2;
private var mouseButton1DownTerrainHitPoint : Vector2;
private var raycastLength : float = 200.0;

private var selectedUnit : GameObject;

var walkSpeed : float = 1.0;
var runSpeed : float = 2.0;
var gridSize : int = 1;
enum Orientation {Horizontal, Vertical}
var gridOrientation = Orientation.Horizontal;
var allowDiagonals = true;
var correctDiagonalSpeed = true;
private var input = Vector2.zero;

function Update () {	
	if (Input.GetKeyDown(KeyCode.Mouse0)) {
		mouseButton1DownPoint = Input.mousePosition;
		
		var hit : RaycastHit;
		var ray = Camera.main.ScreenPointToRay (mouseButton1DownPoint);
		
		if (Physics.Raycast (ray, hit, raycastLength))
		{
			if (hit.collider.name == "Terrain")
			{
				mouseButton1DownTerrainHitPoint = hit.point;
				MoveSelectedUnitToPoint(mouseButton1DownTerrainHitPoint);
			}
		}
	}
}

function MoveSelectedUnitToPoint(destinationPoint : Vector2) {
	selectedUnit = gameObject.Find("Capsule");
	selectedUnit.SendMessage("MoveToPoint", destinationPoint);
}

function MoveToPoint(destinationPoint : Vector2) {
        while (input == Vector2.zero) {
            GetAxes(destinationPoint);
            tx = 0.0;
            yield;
        }
       
        startPosition = transform.position;
        endPosition = gridOrientation == Orientation.Horizontal?
            Vector3(Mathf.Round(transform.position.x), 0.0, Mathf.Round(transform.position.z)) +
            Vector3(System.Math.Sign(input.x)*gridSize, 0.0, System.Math.Sign(input.y)*gridSize)
            :
            Vector3(Mathf.Round(transform.position.x), Mathf.Round(transform.position.y), 0.0) +
            Vector3(System.Math.Sign(input.x)*gridSize, System.Math.Sign(input.y)*gridSize, 0.0);
        t = tx;
        while (t < 1.0) {
            moveSpeed = Input.GetButton("Run")? runSpeed : walkSpeed;
            t += Time.deltaTime * (moveSpeed/gridSize) * (correctDiagonalSpeed  input.x != 0.0  input.y != 0.0? .7071 : 1.0);
            transform.position = Vector3.Lerp(startPosition, endPosition, t);
            yield;
        }
        tx = t - 1.0;   // Used to prevent slight visual hiccups on "grid lines" due to Time.deltaTime variance
        GetAxes(destinationPoint);
    }

function GetAxes(destinationPoint : Vector2) {
	input = Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
	
	if (destinationPoint.x > transform.position.x)
	{
		while (transform.position.x < destinationPoint.x)
		{
		input.x = 1;
		}
	}
}

the point of emphasis here is GetAxes function

Everytime I click an x position greater than transform position, unity freezes and I must use task manager to close it.

Any help is appreciated. Thank you!

		while (transform.position.x < destinationPoint.x)
		{
		input.x = 1;
		}

This is an infinite loop…transform.position.x will always be less than destinationPoint.x, since there’s nothing inside the loop that will change the condition.

–Eric

Hey, thanks for the reply, I’ll see what I can do

I get a OverflowException: Number overflow. when I try this:

function GetAxes(destinationPoint : Vector2) {
	input = Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
	
	if (destinationPoint.x > transform.position.x)
	{
		var i : int = 1;
		var travelDistance : int = destinationPoint.x - transform.position.x;
		for (i=1; i>=travelDistance; i++)
		{
			input.x = 1;
		}
	}
}

I am just beginning to use Unity and I’m sorry for any overlooked logic problems ;/

Thanks