// Update is called once per frame void Update() { timeUntilMove -= Time.deltaTime; timeUntilNotMoving -= Time.deltaTime; if (CanMove()) { ArtObject target = FindNextTarget(); if (target != null) { int[] freeTile = FindFreeAdjacentTile(target.GetComponent <OnGrid> ()); if (freeTile != null) { //Debug.Log("Moving to " + freeTile[0] + " / " + freeTile[1] + " = " + GetComponent<OnGrid>().V3Position(gridTargetX, gridTargetY)); gridTargetX = freeTile [0]; gridTargetY = freeTile [1]; observing = target; if (!visited.Contains(target)) { visited.Add(target); } iTween.MoveTo(this.gameObject, GetComponent <OnGrid> ().V3Position(gridTargetX, gridTargetY), moveTime); timeUntilNotMoving = moveTime; WaitUntilMove(moveTime + Random.Range(minObserveTime, maxObserveTime)); } } } }