void FixedUpdate() { if (canPlay) { // Elegimos el rayo que vamos a usar para el raycast cameraRay = Camera.main.ScreenPointToRay(Input.mousePosition); // Hacemos el raycast y vemos si hemos golpeado alguna casilla if (Physics.Raycast(cameraRay, out cameraHit) && !EventSystem.current.IsPointerOverGameObject() && !isMoving) { if (cameraHit.collider.name.Contains("Plataforma")) { actualHit = board.PositionToIndex(cameraHit.point); if (board.isTile(actualHit)) { if (previousHit != actualHit) { // Vaciamos el camino anterior RestartPath(); // Calculamos el camino path.AddRange(board.AStarAlgorithm(path[path.Count - 1], actualHit, false)); // Dibujamos el camino DrawPath(); // Guardamos el indice de la casilla cambiada previousHit = actualHit; } } else if (previousHit != -1) { // Cambiamos el material de la anterior casillas board.RemoveMaterial(path[path.Count - 1], selectedMaterial); path.ForEach(tile => board.RemoveMaterial(tile, cursorMaterial)); previousHit = -1; path.Clear(); } } } else if (previousHit != -1 && path.Count > 1) { board.RemoveMaterial(path[path.Count - 1], selectedMaterial); path.ForEach(tile => board.RemoveMaterial(tile, cursorMaterial)); previousHit = -1; path.Clear(); } } }