예제 #1
0
파일: BEnemy.cs 프로젝트: rubohex/V1Rus
 /// <summary>
 /// Devuelve el material de todas las casillas del rango de vision a su estado anterior
 /// </summary>
 private void ResetVisionRange()
 {
     foreach (int tile in visionTiles)
     {
         board.RemoveMaterial(tile, visionMaterial);
         board.RemoveState(tile, BTile.ETileState.EVision);
     }
 }
예제 #2
0
파일: BPlayer.cs 프로젝트: rubohex/V1Rus
    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();
            }
        }
    }