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

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

Suggested prompts:

Запитайте мені питання про цей предмет

Сумаризуйте цей розділ

Покажіть реальні приклади

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