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

bookПояснення Коду

Код гравця

Ініціалізація у методі Start

private void Start()
{
    startPosition = transform.position;
}

Призначення: Зберігає початкову позицію гравця під час запуску гри.

Перезапуск позиції гравця

public void RestartPlayerPosition()
{
    transform.position = startPosition;
    rb.velocity = Vector2.zero;
}

Призначення: Скидає позицію гравця до початкової та зупиняє будь-який рух, встановлюючи швидкість на нуль.

Обробка введення гравця в методі Update

private void Update()
{
    Vector2 oldVelocity = rb.velocity;
    if (Input.GetKeyDown(KeyCode.Space))
    {
        oldVelocity.y = 6;
    }
    oldVelocity.x = 4;
    rb.velocity = oldVelocity;
}

Призначення: Фіксує введення гравця (клавіша пробіл) для того, щоб змусити гравця "стрибнути", встановлюючи y-швидкість на 6, при цьому постійно рухаючи гравця вправо шляхом встановлення x-швидкості на 4.

Обробка зіткнень

OnCollisionEnter2D

private void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.collider.tag == "ground")
    {
        RestartPlayerPosition();
    }
}

Призначення: Скидає позицію гравця при зіткненні з об'єктами з тегом "ground".

OnTriggerEnter2D

private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.tag == "win")
    {
        winPanel.SetActive(true);
        SoundManager.instance.PlayEffect(1);
    }
}

Призначення: Активує панель перемоги та відтворює звуковий ефект при зіткненні гравця з об'єктами з тегом "win".

Підсумок

  • Рух: Гравець рухається вправо безперервно та стрибає при натисканні клавіші пробіл;
  • Скидання: Позиція гравця скидається при зіткненні із землею;
  • Перемога: Відображає панель перемоги та відтворює звук при досягненні тригера перемоги.

Клас SoundManager

Метод Start

private void Start()
{
    if (instance == null)
    {
        instance = this;
    }
    else
    {
        Destroy(gameObject);
        return;
    }
    DontDestroyOnLoad(gameObject);
}

Призначення: Забезпечує існування лише одного екземпляра SoundManager у грі за допомогою патерна Singleton. Використовує DontDestroyOnLoad(gameObject), щоб зберігати об'єкт при переході між різними сценами.

Метод PlayEffect

public void PlayEffect(int index)
{
    if (index >= 0 && index < effects.Count)
    {
        source.PlayOneShot(effects[index]);
    }
}

Призначення: Приймає ціле число index для визначення, який звуковий ефект відтворити зі списку effects. Перевіряє, чи знаходиться index у допустимому діапазоні списку effects, і відтворює відповідний звуковий ефект за допомогою source.PlayOneShot(effects[index]).

Підсумок

  • Патерн Singleton: Гарантує існування лише одного екземпляра SoundManager у грі, який зберігається між сценами;
  • Відтворення звукових ефектів: Використовує метод PlayEffect для відтворення звукових ефектів за індексом у списку effects;
  • Джерело аудіо: Використовує компонент AudioSource для відтворення аудіокліпів.

Клас WinPanel

Клас WinPanel забезпечує функціональність для UI-панелі, яка з'являється при перемозі гравця. Містить методи для повернення до головного меню або перезапуску рівня, кожен з яких відтворює звуковий ефект і завантажує відповідну сцену.

Методи

Метод ReturnToMainMenu

public void ReturnToMainMenu()
{
    SoundManager.instance.PlayEffect(0);
    SceneManager.LoadScene(0);
}

Призначення: Відтворює звуковий ефект (індекс 0) за допомогою SoundManager.instance.PlayEffect(0). Завантажує сцену головного меню з індексом збірки 0 за допомогою SceneManager.LoadScene(0).

Метод RestartLevel

public void RestartLevel()
{
    SoundManager.instance.PlayEffect(0);
    SceneManager.LoadScene("Game");
}

Призначення: Відтворює звуковий ефект (індекс 0) за допомогою SoundManager.instance.PlayEffect(0). Завантажує ігрову сцену з назвою "Game" за допомогою SceneManager.LoadScene("Game").

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Awesome!

Completion rate improved to 3.33

bookПояснення Коду

Свайпніть щоб показати меню

Код гравця

Ініціалізація у методі Start

private void Start()
{
    startPosition = transform.position;
}

Призначення: Зберігає початкову позицію гравця під час запуску гри.

Перезапуск позиції гравця

public void RestartPlayerPosition()
{
    transform.position = startPosition;
    rb.velocity = Vector2.zero;
}

Призначення: Скидає позицію гравця до початкової та зупиняє будь-який рух, встановлюючи швидкість на нуль.

Обробка введення гравця в методі Update

private void Update()
{
    Vector2 oldVelocity = rb.velocity;
    if (Input.GetKeyDown(KeyCode.Space))
    {
        oldVelocity.y = 6;
    }
    oldVelocity.x = 4;
    rb.velocity = oldVelocity;
}

Призначення: Фіксує введення гравця (клавіша пробіл) для того, щоб змусити гравця "стрибнути", встановлюючи y-швидкість на 6, при цьому постійно рухаючи гравця вправо шляхом встановлення x-швидкості на 4.

Обробка зіткнень

OnCollisionEnter2D

private void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.collider.tag == "ground")
    {
        RestartPlayerPosition();
    }
}

Призначення: Скидає позицію гравця при зіткненні з об'єктами з тегом "ground".

OnTriggerEnter2D

private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.tag == "win")
    {
        winPanel.SetActive(true);
        SoundManager.instance.PlayEffect(1);
    }
}

Призначення: Активує панель перемоги та відтворює звуковий ефект при зіткненні гравця з об'єктами з тегом "win".

Підсумок

  • Рух: Гравець рухається вправо безперервно та стрибає при натисканні клавіші пробіл;
  • Скидання: Позиція гравця скидається при зіткненні із землею;
  • Перемога: Відображає панель перемоги та відтворює звук при досягненні тригера перемоги.

Клас SoundManager

Метод Start

private void Start()
{
    if (instance == null)
    {
        instance = this;
    }
    else
    {
        Destroy(gameObject);
        return;
    }
    DontDestroyOnLoad(gameObject);
}

Призначення: Забезпечує існування лише одного екземпляра SoundManager у грі за допомогою патерна Singleton. Використовує DontDestroyOnLoad(gameObject), щоб зберігати об'єкт при переході між різними сценами.

Метод PlayEffect

public void PlayEffect(int index)
{
    if (index >= 0 && index < effects.Count)
    {
        source.PlayOneShot(effects[index]);
    }
}

Призначення: Приймає ціле число index для визначення, який звуковий ефект відтворити зі списку effects. Перевіряє, чи знаходиться index у допустимому діапазоні списку effects, і відтворює відповідний звуковий ефект за допомогою source.PlayOneShot(effects[index]).

Підсумок

  • Патерн Singleton: Гарантує існування лише одного екземпляра SoundManager у грі, який зберігається між сценами;
  • Відтворення звукових ефектів: Використовує метод PlayEffect для відтворення звукових ефектів за індексом у списку effects;
  • Джерело аудіо: Використовує компонент AudioSource для відтворення аудіокліпів.

Клас WinPanel

Клас WinPanel забезпечує функціональність для UI-панелі, яка з'являється при перемозі гравця. Містить методи для повернення до головного меню або перезапуску рівня, кожен з яких відтворює звуковий ефект і завантажує відповідну сцену.

Методи

Метод ReturnToMainMenu

public void ReturnToMainMenu()
{
    SoundManager.instance.PlayEffect(0);
    SceneManager.LoadScene(0);
}

Призначення: Відтворює звуковий ефект (індекс 0) за допомогою SoundManager.instance.PlayEffect(0). Завантажує сцену головного меню з індексом збірки 0 за допомогою SceneManager.LoadScene(0).

Метод RestartLevel

public void RestartLevel()
{
    SoundManager.instance.PlayEffect(0);
    SceneManager.LoadScene("Game");
}

Призначення: Відтворює звуковий ефект (індекс 0) за допомогою SoundManager.instance.PlayEffect(0). Завантажує ігрову сцену з назвою "Game" за допомогою SceneManager.LoadScene("Game").

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

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

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

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