Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Випадково Згенеровані Перешкоди. | Покращення гри Flappy Bird
Бійцівська гра в Unity

bookВипадково Згенеровані Перешкоди.

Клас Obstacle керує перешкодами у грі, забезпечуючи їх повторне розміщення після виходу за межі екрану для підтримки безперервного ігрового процесу.

Методи

Метод Start

private void Start()
{
    lastObject = startingLastObject;
    player = FindAnyObjectByType<PlayerMVT>().transform;
}

Призначення: Ініціалізує останню перешкоду та знаходить трансформ гравця.

Як працює: lastObject = startingLastObject;: Встановлює lastObject на початкову перешкоду, вказану в Інспекторі; player = FindAnyObjectByType<PlayerMVT>().transform;: Знаходить трансформ гравця за допомогою методу FindAnyObjectByType.

Метод OnBecameInvisible

private void OnBecameInvisible()
{
    if (player == null) return;
    if (transform.position.x >= player.position.x) return;
    if (transform == lastObject) return;

    Vector2 position = transform.position;
    float random = Random.Range(0, 100);

    if (random <= 50)
    {
        position.y = Random.Range(-2, 1);
    }
    else
    {
        position.y = Random.Range(15, 18);
    }

    position.x = lastObject.position.x + Random.Range(6f, 10f);
    transform.position = position;
    lastObject = transform;
}

Призначення: Змінює розташування перешкоди, коли вона виходить за межі екрану та відповідає певним умовам.

Як це працює: Скрипт перевіряє наявність гравця перед виконанням (if (player == null) return;), переконується, що перешкода знаходиться позаду гравця (if (transform.position.x >= player.position.x) return;), і запобігає повторному переміщенню тієї ж перешкоди (if (transform == lastObject) return;).

Він отримує поточну позицію перешкоди (Vector2 position = transform.position;), генерує випадкове число (float random = Random.Range(0, 100);) і змінює y-координату перешкоди залежно від випадкового числа.

Далі оновлює x-координату відносно останньої перешкоди (position.x = lastObject.position.x + Random.Range(6f, 10f);) і оновлює lastObject, щоб посилатися на поточну перешкоду (lastObject = transform;).

Підсумок

  • Ініціалізація: Встановлює початкову останню перешкоду та знаходить гравця;
  • Переміщення: Коли перешкода виходить за межі екрану та відповідає певним умовам, вона переміщується на випадкову відстань попереду останньої перешкоди з випадковою висотою;
  • Умови: Забезпечує переміщення перешкод лише якщо вони знаходяться позаду гравця і не є тією ж самою перешкодою повторно.

Ця конфігурація забезпечує безперервний потік перешкод у грі, підтримуючи виклик і різноманітність для гравця.

question mark

Що визначає нову y-позицію об'єкта, коли він стає невидимим і переміщується?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 5. Розділ 3

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

bookВипадково Згенеровані Перешкоди.

Клас Obstacle керує перешкодами у грі, забезпечуючи їх повторне розміщення після виходу за межі екрану для підтримки безперервного ігрового процесу.

Методи

Метод Start

private void Start()
{
    lastObject = startingLastObject;
    player = FindAnyObjectByType<PlayerMVT>().transform;
}

Призначення: Ініціалізує останню перешкоду та знаходить трансформ гравця.

Як працює: lastObject = startingLastObject;: Встановлює lastObject на початкову перешкоду, вказану в Інспекторі; player = FindAnyObjectByType<PlayerMVT>().transform;: Знаходить трансформ гравця за допомогою методу FindAnyObjectByType.

Метод OnBecameInvisible

private void OnBecameInvisible()
{
    if (player == null) return;
    if (transform.position.x >= player.position.x) return;
    if (transform == lastObject) return;

    Vector2 position = transform.position;
    float random = Random.Range(0, 100);

    if (random <= 50)
    {
        position.y = Random.Range(-2, 1);
    }
    else
    {
        position.y = Random.Range(15, 18);
    }

    position.x = lastObject.position.x + Random.Range(6f, 10f);
    transform.position = position;
    lastObject = transform;
}

Призначення: Змінює розташування перешкоди, коли вона виходить за межі екрану та відповідає певним умовам.

Як це працює: Скрипт перевіряє наявність гравця перед виконанням (if (player == null) return;), переконується, що перешкода знаходиться позаду гравця (if (transform.position.x >= player.position.x) return;), і запобігає повторному переміщенню тієї ж перешкоди (if (transform == lastObject) return;).

Він отримує поточну позицію перешкоди (Vector2 position = transform.position;), генерує випадкове число (float random = Random.Range(0, 100);) і змінює y-координату перешкоди залежно від випадкового числа.

Далі оновлює x-координату відносно останньої перешкоди (position.x = lastObject.position.x + Random.Range(6f, 10f);) і оновлює lastObject, щоб посилатися на поточну перешкоду (lastObject = transform;).

Підсумок

  • Ініціалізація: Встановлює початкову останню перешкоду та знаходить гравця;
  • Переміщення: Коли перешкода виходить за межі екрану та відповідає певним умовам, вона переміщується на випадкову відстань попереду останньої перешкоди з випадковою висотою;
  • Умови: Забезпечує переміщення перешкод лише якщо вони знаходяться позаду гравця і не є тією ж самою перешкодою повторно.

Ця конфігурація забезпечує безперервний потік перешкод у грі, підтримуючи виклик і різноманітність для гравця.

question mark

Що визначає нову y-позицію об'єкта, коли він стає невидимим і переміщується?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 5. Розділ 3
some-alt