Example #1
0
 private SelectGameObject selectGameObject; //  объект, отвечающий за выделение объектов(юнитов) на экране
 #endregion
 // Use this for initialization
 void Start()
 {
     sceneCamera         = Camera.main;                            //  указываем на главную камеру сцены
     basicCameraRotation = sceneCamera.transform.rotation;         //  запоминаем углы камеры
     CalcMoveAngles();                                             //  вычисляем перемещение по сторонам относительно угла поворота камеры
     selectGameObject         = GetComponent <SelectGameObject>(); //  получаем объект SelectGameObject
     GameParams.GamePlayState = GamePlayState.Play;                //  устанавливаем состояние игры на Play
 }
 // Update is called once per frame
 /// <summary>
 /// Отслеживание состояний соревнования.
 /// </summary>
 void Update()
 {
     if ((GameParams.GamePlayState == GamePlayState.SelectStart || GameParams.GamePlayState == GamePlayState.SelectFinish) &&
         Input.GetMouseButtonDown(1))
     {
         RaycastHit hit = SelectGameObject.GetHitFromCursor();
         if (hit.transform == null || hit.transform.tag != "Terrain")
         {
             return;
         }
         Vector2Int spawnPos = new Vector2Int(Mathf.RoundToInt(hit.point.x), Mathf.RoundToInt(hit.point.z));
         //  получение координат по щелчку мыши
         if (TerrainNavGrid.Instance.IsCellUsed(spawnPos))
         {
             return;
         }
         if (GameParams.GamePlayState == GamePlayState.SelectStart)  //  если состояние - выбор старта
         {
             SpawnStart(spawnPos);
             //  спавн объекта зоны старта
         }
         else  //  если состояние - выбор финиша
         {
             float distance = Vector2Int.Distance(StartGridPosition, spawnPos);
             if (distance <= GameConstants.MaxDistance)
             {
                 TipsControls.Instance.SetTipsText("Слишком близко к зоне старта!");
                 return;
             }
             PathFinder finder = new PathFinder(StartGridPosition, spawnPos, GameConstants.PathFindMinHeight);
             finder.FindPath();
             if (!finder.IsPathFound)
             {
                 TipsControls.Instance.SetTipsText("Невозможно найти путь между стартом и финишом!");
                 return;
             }
             SpawnFinish(spawnPos);
             //  спавн объекта зоны финиша
         }
         GameParams.GamePlayState = GamePlayState.SelectParams;
         TipsControls.Instance.SetTipsText("");
     }
 }
Example #3
0
    void Update()
    {
        if (GameParams.GamePlayState != GamePlayState.Spawn || !Input.GetMouseButton(1))
        {
            return;
        }
        RaycastHit hit = SelectGameObject.GetHitFromCursor();

        if (hit.transform == null || hit.transform.tag != "Terrain")
        {
            return;
        }
        Vector2Int spawnPos = new Vector2Int(Mathf.RoundToInt(hit.point.x), Mathf.RoundToInt(hit.point.z));

        if (TerrainNavGrid.Instance.IsCellUsed(spawnPos))
        {
            return;
        }
        GameObject target;

        if (UnitButtonState == ButtonKeyStates.Checked)
        {
            if (GameParams.GameMode == GameModes.Competitions && Vector2Int.Distance(spawnPos, CompetitionMenuContols.StartGridPosition) > GameConstants.FlagRadius)
            {
                TipsControls.Instance.SetTipsText("Невозможно спавнить юнита за пределами зоны старта!");
            }
            else
            {
                target            = Instantiate(UnitPrefab, new Vector3(spawnPos.x, 0, spawnPos.y), new Quaternion()) as GameObject;
                IsPlayerSpawnUnit = GameParams.GameMode == GameModes.Competitions;
            }
        }
        else
        {
            target             = Instantiate(BuildPrefab, new Vector3(spawnPos.x, 0, spawnPos.y), new Quaternion()) as GameObject;
            IsPlayerSpawnBuild = GameParams.GameMode == GameModes.Competitions;
        }
        if (GameParams.GameMode == GameModes.Competitions)
        {
            ResetButtonsStates();
        }
    }
Example #4
0
 private void OnDestroy()
 {
     instance = null;
 }
Example #5
0
 private void Awake()
 {
     instance = this;
 }