Как сделать ПЕРЕХОД МЕЖДУ УРОВНЯМИ и ВРАГОВ на Unity #3 [GameDev]

Поділитися
Вставка
  • Опубліковано 15 лис 2024

КОМЕНТАРІ • 17

  • @gedrolitgamedev
    @gedrolitgamedev  Рік тому +1

    Готовый скрипт levelUnlocker (на видео я забыл дописать строчку, отвечающую за переход на следующий уровень - здесь исправлено):
    using UnityEngine;
    using UnityEngine.SceneManagement;
    public class levelUnlocker : MonoBehaviour
    {
    private void OnTriggerEnter2D(Collider2D collision) {
    if (collision.CompareTag("Player")){
    UnlockNextLevel();
    }
    }
    private void UnlockNextLevel(){
    int currentScene = SceneManager.GetActiveScene().buildIndex;
    if (currentScene >= PlayerPrefs.GetInt("Scenes")){
    PlayerPrefs.SetInt("Scenes", currentScene + 1);
    }
    SceneManager.LoadScene(currentScene + 1);
    }
    }

    • @yur4ik_top4ik
      @yur4ik_top4ik 10 місяців тому +1

      Я минут 20 сидел думал в чом дело пока не залез в коменты

    • @gedrolitgamedev
      @gedrolitgamedev  10 місяців тому

      @@yur4ik_top4ik 😅👉👈

  • @sergejunk
    @sergejunk Рік тому +1

    Пили ещё! Хотелось бы ещё подобных уроков! А то на русскоязычном ютубе что-то не видно таких толковых коротких видео, где за 5-10-15 минут показывается такой объём информации. Я при просмотре твоих двух курсов понял больше, чем за неделю поисков и попыток разобраться в той информации, которая есть у других ютуберов. Спасибо большое!

  • @Galician_pon
    @Galician_pon Рік тому +1

    Ееее, новый видос!

  • @Jourdfdf
    @Jourdfdf Рік тому +1

    Круто! Классно, что не банальная идея ролика

  • @netimenia
    @netimenia Рік тому +1

    Прикольно, полезно для новичков

  • @NikitaKonovalov-o7c
    @NikitaKonovalov-o7c 9 місяців тому +1

    Почему levelUnlocker может открывать сразу 2 уровня (третий остаётся заблокирован)? ошибки в коде нет. билд индекс соответствует каждой сцене

    • @gedrolitgamedev
      @gedrolitgamedev  9 місяців тому

      Хмм, у меня есть несколько версий, где можно сделать что-то не так, но это связано как раз с кодом и индексами сцен, и если ты уверен что у тебя с ними всё в порядке, то я не знаю. (учти, что PlayerPrefs сохраняет прогресс, так что может ты когда-то перешёл на второй уровень и теперь он у тебя доступен всегда)

    • @NikitaKonovalov-o7c
      @NikitaKonovalov-o7c 9 місяців тому +1

      @@gedrolitgamedev Спасибо! Я понял, значит он доступен всегда. А как в рабочем билде сделать, чтобы когда 0 сцена перезапускалась был доступен только 1 уровень. На что PlayerPrefs заменить?

  • @Popusk_Mayami
    @Popusk_Mayami Рік тому +1

    У меня нету кнопки LevelManager 4:39

    • @gedrolitgamedev
      @gedrolitgamedev  Рік тому

      Проверь: 1) Создан ли скрипт "LevelManager" 2)Закинул ли ты скрипт на Canvas (4:20) и указаны ли кнопки 3)Перетащен ли Canvas в поле на компоненте Button. Если всё на месте, то можешь написать в тг (в группу или мне в личку) и там со всем разберёмся

  • @bibibtrigger8447
    @bibibtrigger8447 Рік тому +1

    Чел, ахуенен. Чуть вникни в режиссуру, и попробуй как в предыдущем ролике делать не чисто гайды, а более развлекательные. Думаю у тя неплохо получится. Удачи!

    • @gedrolitgamedev
      @gedrolitgamedev  Рік тому

      В точку. В конце я упомянул, что пока не будет гайдов, а больше будет уклон в развлекательный контент. Надеюсь вам зайдет.

  • @sergejunk
    @sergejunk Рік тому +1

    Почему-то автоматом не перекидывает на следующий уровень. Только разблокирует кнопки выбора уровней((
    Вот скрипты:
    using UnityEngine;
    using UnityEngine.SceneManagement;
    using UnityEngine.UI;
    public class levelManager : MonoBehaviour
    {
    public Button[] buttons;
    private int unlockScenes;
    private void Start()
    {
    unlockScenes = PlayerPrefs.GetInt("Scenes", 1);
    for (int i = 0; i < buttons.Length; i++){
    if (i >= unlockScenes){
    buttons[i].interactable = false;
    }
    }
    }
    public void SceneLoad(int levelIndex){
    SceneManager.LoadScene(levelIndex);
    }
    }
    ---------------------------------------------------------------------------------
    using UnityEngine;
    using UnityEngine.SceneManagement;
    public class levelUnlocker : MonoBehaviour
    {
    private void OnTriggerEnter2D(Collider2D collision) {
    if (collision.CompareTag("Player")){
    UnlockNextLevel();
    }
    }
    private void UnlockNextLevel(){
    int currentScene = SceneManager.GetActiveScene().buildIndex;
    if (currentScene >= PlayerPrefs.GetInt("Scenes")){
    PlayerPrefs.SetInt("Scenes", currentScene + 1);
    }
    }
    }
    Галку Is Trigger и тег на игроке поставил. Можешь подсказать?

    • @gedrolitgamedev
      @gedrolitgamedev  Рік тому

      Я вообще забыл добавить строчку кода, которая перекидывает на следующий уровень 🤦‍♂.
      Допиши в функции UnlockNextLevel() в конце такую строчку:
      SceneManager.LoadScene(currentScene + 1);
      Видимо я записал фрагмент видео и только через некоторое время заметил, что не добавил эту строчку. Добавил, но забыл записать. В следующий раз буду внимательнее, а у тебя всё правильно.

    • @sergejunk
      @sergejunk Рік тому +1

      @@gedrolitgamedev ОГОНЬ! Заработало)) Пасип!