void MethodToRunUp() // Метод подписанный на событие переключения в режим разбегания { if (!Home) // Если призрак не находиться дома { GhostMode = GhostM.RunUp; // Переключаем его в режим "Разбегания" } }
void MethodToPursuit() // Метод подписанный на событие переключения в режим преследования { if (!Home) // Если призрак не находиться дома { GhostMode = GhostM.Pursuit; // Переключаем его в режим "Погони" } }
void LeavingTheHouse() // Этот метод отвечает за то чтобы каждое приведение смогло покинуть свой дом для вступления в игру { if (transform.position != GhostStartPosition) // Если призрак ещё не на своей стартовой позиции { TheLastPosition = transform.position; // Записываем его реальную позицию как старую if (DestinationPoint != new Vector3(15, 0, 18)) // И если призрак не стоит на прямой линии выхода из дома { DestinationPoint = new Vector3(15, 0, 18); // То ставим ему это местоположение как отправную точку } else // Иначе если он уже стоит на этой точке { DestinationPoint = GhostStartPosition; // Устанавливаем ему точку назначения для выхода из дома } } else // Иначе если призрак оказалься на своей стартовой позиции { Home = false; // Указываем что он вышел из дома // И выбираем какой режим ему нужно сейчас использовать преследование, страх или разбегание if (GM.ActiveModeOfGhosts == GameManager.ActModOfG.Pursuit) // Если пекмен не опасен и общий для всех приведений режим это "Преследование" { GhostMode = GhostM.Pursuit; // То режим приведения переключаем на "Преследование" } else if (GM.ActiveModeOfGhosts == GameManager.ActModOfG.Fright) // Если общий для всех приведений режим это "Страх" { GhostMode = GhostM.fright; // Включаем призраку режим страха } else if (GM.ActiveModeOfGhosts == GameManager.ActModOfG.RunUp) // Если общий для всех приведений режим это "Разбегание" { GhostMode = GhostM.RunUp; // Включаем призраку режим разбегания } } Turn(); // Вызываем метод поворота }
void MethodCherryWasTaken() // Метод вызванный событием "Вишня была взята" { if (Home == false) // Если данное приведение не находиться дома { GhostMode = GhostM.fright; // Переключаем режим этого приведения в режим испуга } gameObject.transform.GetChild(0).gameObject.GetComponent <MeshRenderer>().material = GM.GhostsMats[1]; // Делаем глаза этого призрака цветом указывающим что его можно съесть gameObject.transform.GetChild(1).gameObject.GetComponent <MeshRenderer>().material = GM.GhostsMats[1]; // Делаем этого призрака цветом указывающим что его можно съесть }
void Start() { StartPosition = transform.position; DestinationPoint = transform.position; // Задаём начальные данные переменной "DestinationPoint" PacMan = GameObject.FindGameObjectWithTag("PacMan"); // Ищем на сцене пекмена и ложим его в GameObject пекмен GhostRB = gameObject.GetComponent <Rigidbody>(); // Ищем на призраке компонент RidgitBody и ложим его в переменую GhostRB GhostMode = GhostM.Expectation; // Выставляем режим по умолчанию на ожидание GM = GameObject.FindGameObjectWithTag("GameManager").GetComponent <GameManager>(); // Находим скрипт гейм менеджера и ложим его в "GM" DirrectionRays[0] = new Ray(Pos, new Vector3(0, 0, 1)); // Заносим в массив направление луча вперёд DirrectionRays[1] = new Ray(Pos, new Vector3(1, 0, 0)); // Заносим в массив направление луча вправо DirrectionRays[2] = new Ray(Pos, new Vector3(0, 0, -1)); // Заносим в массив направление луча вниз DirrectionRays[3] = new Ray(Pos, new Vector3(-1, 0, 0)); // Заносим в массив направление луча влево }
void MethodAllDotsAreCollected() // Этот метод запускает корутину завершения уровня { GhostMode = GhostM.Expectation; // Включаем режим ожидания DestinationPoint = transform.position; // Ставим точку назначения призрака на тоже место где он стоит if (GhostName != GhostN.Hunter) // Если имя этого призрака не охотник { DelayTimer = Delay; // Ставим задержку до выхода из дома установленную для этого приведения Home = true; // И указываем ему что он находиться дома } if (GM.GameLevel < 10) // Если это был не последний уровень { StartCoroutine(IEnumAllDotsAreCollected()); // Вызываем Метод способный отсчитывать время } }
void Expectation() // Этот метод отвечает за режим ожидания { if (GM.DotsEaten >= NomberDotsForActivation) // Если количество дотов которое нужно для активации это приведения больше или равно { if (Home) // Если призрак дома { GhostMode = GhostM.LeavingTheHouse; // То включаем режим покинуть дом } else // Иначе если призрак уже покинул дом { if (GM.ActiveModeOfGhosts != GameManager.ActModOfG.Fright) // Если пекмен в данный момент не опасен { GhostMode = GhostM.Pursuit; // То переключаем режим приведения на погоню } else // Иначе если он опасен { GhostMode = GhostM.fright; // Включаем режим страха } } } }
IEnumerator DelayGhostRevitalizing() // Эта корутина занимаеться уничтожением и оживлением приведения { GetComponent <CapsuleCollider>().enabled = false; // Выключаем коллайдер призрака transform.GetChild(0).GetComponent <MeshRenderer>().enabled = false; // Выключаем отображение меша глаз приведения transform.GetChild(1).GetComponent <MeshRenderer>().enabled = false; // Выключаем отображение меша приведения GhostMode = GhostM.Expectation; // Ставим приведение в режим ожидания transform.position = StartPosition; // Телепортируем его в дом на его начальную позицию DestinationPoint = StartPosition; // Ставим стартовую позицию как точку назначения transform.rotation = Quaternion.Euler(Vector3.zero); // Поворачиваем его лицом вперёд if (GhostName != GhostN.Hunter) // Если это не призрак охотник { Home = true; // Указываем что он дома DelayTimer = 8; // То ставим ему задержку для остальных приведений } else { DelayTimer = 4; // Иначе если это охотник ставим задержку для охотника } yield return(new WaitForSeconds(3f)); // Ждём GetComponent <CapsuleCollider>().enabled = true; // Включаем коллайдер призрака transform.GetChild(0).GetComponent <MeshRenderer>().enabled = true; // Включаем отображение меша глаз приведения transform.GetChild(1).GetComponent <MeshRenderer>().enabled = true; // Выключаем отображение меша приведения }
void MethodKillPacMan() // Метод вызванный событием "Убить пекмена" { GhostMode = GhostMove.GhostM.Expectation; // Ставим всем приведениям режим ожидания DestinationPoint = transform.position; // Ставим точку назначения призраку на тоже место где он стоит StartCoroutine(IEnumKillPacMan()); // Вызываем корутину "IEnumKillPacMan" }
void MethodPacManNotDanger() // Этот метод вызываеться событием "Пекмен больше не опасен" { GhostMode = GhostM.Expectation; // Ставим приведениям режим ожидания gameObject.transform.GetChild(0).gameObject.GetComponent <MeshRenderer>().material = GM.GhostsMats[0]; // Делаем глаза этого призрака цветом указывающим что его можно съесть gameObject.transform.GetChild(1).gameObject.GetComponent <MeshRenderer>().material = Original; // Делаем этого призрака цветом указывающим что его можно съесть }