private void FixedUpdate() { // Обработка передвижения камеры осуществляется, если окно внутриигрового меню неактивно if (!MenuPanelLogic.IsMenuActive()) { ProcessCameraMovement(); } }
private void Update() { Vector3 mouseWorldCoordinates = GetMouseWorldCoordinates(); // Получаем положение курсора мыши в мировых координатах Vector3Int tileCoordinates = GetTileCoordinates(mouseWorldCoordinates); // Конвертируем позицию этой точки в координаты ячейки, в которой она содержится // При наведении курсора на ячейку поля, на нее накладывается выделение в виде шестиугольной рамки. if (IsTileExists(tileCoordinates)) { SelectTile(tileCoordinates); } // По нажатию клавиши Esc открывается внутриигровое меню if (Input.GetKeyDown(KeyCode.Escape)) { MenuPanelLogic.IsMenuPanelActive = true; MenuPanelLogic.menuBackground.SetActive(true); } // Все действия игроком на игровом поле обрабатываются, если внутриигровое меню неактивно. if (!MenuPanelLogic.IsMenuActive()) { StatusBarLogic.UpdateStatusBar(); // Обрабатываем нажатия пользователем левой кнопкой мыши по городам, юнитам и ландшафту // С помощью левой кнопки мыши пользователь может выбрать юнита для передвижения if (Input.GetMouseButtonDown(LEFT_BUTTON_CLICK)) { // Проверяем, кликнул ли пользователь ЛКМ по одному из своих городов: ProcessClickOnPlayerCity(tileCoordinates); // Проверяем, кликнул ли пользователь ЛКМ по одному из своих юнитов: ProcessClickOnPlayerUnit(tileCoordinates); } // С помощью правой кнопки мыши юнитов можно будет передвигать if (Input.GetMouseButtonDown(RIGHT_BUTTON_CLICK)) { if (Player.selectedUnit != null && Player.selectedUnit.IsMovingPossible(tileCoordinates)) { // Если юнит выбран и движение в выбранную клетку возможно, производим перемещение юнита Player.selectedUnit.Move(tileCoordinates); // Производим перемещение юнита в указанную клетку UnitInfoPanelLogic.UpdateUnitInfo(Player.selectedUnit); // Обновляем информацию о юните в UnitInfoPanel Player.selectedUnit.HideTilesForMoving(); // После движения убираем сетку возможных тайлов для передвижения Player.selectedUnit.SetTilesForMoving(); // Просчитываем новую сетку возможных передвижений if (Player.selectedUnit.HasAP()) { Player.selectedUnit.ShowTilesForMoving(); // Вновь отрисовываем сетку возможных тайлов для перемещения } } } } }