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

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

Awesome!

Completion rate improved to 3.33

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