Как сделать игру на Unity в 2д с нуля #2 | Спавнер труб

Поділитися
Вставка
  • Опубліковано 11 кві 2022
  • Чекни описание
    Там много полезностей (в том числе и исходный проект)😉
    Начинаю курс по Unity2d с нуля, где почти подробно рассказываю как и что происходит.
    На этом курсе мы от полного недопонимания дойдем до готовой версии Flappy bird.
    Полезные ссылки:
    -
    Boosty: boosty.to/hornas (там исходники туториалов)
    Дискорд сервер: / discord
    Телеграмм канал: t.me/HRNchanel
    JetBrains Rider - www.jetbrains.com/ru-ru/rider...
    Unity - unity3d.com/get-unity/download
    Графика для Flappy bird - gcup.ru/load/assets/tilesets/...
    Шрифт Flappy bird - fonts-online.ru/fonts/flappy-...
    Моя игра ("Furaito"): hornas.itch.io/furaito
    На хлебушек подать можно здесь: www.donationalerts.com/r/hornas
    -
    СОЦСЕТИ:
    шифруюсь.
    Ключевый слова:
    Юнити, юнити, юнити2д, юнити 2д, Unity2d, Unity, юнити с нуля,
    юнити с полного нуля, как сделать игру, как создать игру, Gamedev,
    gamedev, разработка игр, 2д, Rider, JetBrains Rider, как сделать игру быстро,
    flappy bird на юнити, flappy bird с нуля, как сделать игру с полнейшего нуля
  • Ігри

КОМЕНТАРІ • 111

  • @fuckinguser1554
    @fuckinguser1554 4 місяці тому +21

    Мужик не понял как избавиться от спама прыжка и решил сделать флеппибирд

  • @Limoncik__
    @Limoncik__ Рік тому +33

    "В следующем видео я обьясню как это исправить" ммм спасиьо за обьяснение как это исправить

    • @darkknimperial2435
      @darkknimperial2435 5 місяців тому +1

      Сложно нажать на видео и посмотреть там?

    • @Melo4ekyt
      @Melo4ekyt 4 місяці тому +2

      using UnityEngine;
      public class NewBehaviourScript : MonoBehaviour
      {
      [SerializeField] float speed, jumpForce;
      private Rigidbody2D rb;
      private void Start()
      {
      rb = GetComponent();
      }
      private void Update()
      {
      var movement = Input.GetAxis("Horizontal");
      if (movement != 0)
      rb.position += new Vector2(movement * speed * Time.deltaTime, 0);
      if (Input.GetKeyDown(KeyCode.Space) && Mathf.Abs(rb.velocity.y) < 0.05)
      rb.AddForce(new Vector2(0, jumpForce), ForceMode2D.Impulse);
      }
      }

    • @typical6376
      @typical6376 4 місяці тому

      не, Он просто обещал исправить бесконечный прыжок, а потом просто решил сделать флепибердс)@@darkknimperial2435

  • @nicoyazawa1
    @nicoyazawa1 Рік тому +16

    Заметил, что трубы созданные остаются, нужно создать блок, который будет очищать объекты которые ушли за заданные координаты, надеюсь увижу это в следующих уроках

  • @Milash001
    @Milash001 2 роки тому +11

    Наконец то нашел время посмотреть видео! Спасибо за туториалы!😊

  • @badbro6234
    @badbro6234 Рік тому +4

    Очень классно объясняешь! Спасибо огромное за ролики! 😊

  • @sheonaner
    @sheonaner Рік тому +2

    Блин, под эту музыку такой кайф слушать

  • @firie8234
    @firie8234 Рік тому +7

    а почему у меня основной куб, если долго играть начинает съезжать влево?

  • @alekseybiryukov7497
    @alekseybiryukov7497 2 роки тому +12

    Молодец, хорошо объясняешь для новичков. Но делать поля public, которые используются только внутри одного класс - моветон. Если хочется их редактировать из Unity, то делай их с помощью [SerializeField].

    • @h0rNAs
      @h0rNAs  2 роки тому +4

      А я в следующих уроков рассказал что нужно избавляться от public :)
      Спасибо за приятные слова!

  • @user-we6si4mi3x
    @user-we6si4mi3x Рік тому

    Большое спасибо за урок !!!

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

    Ты очень крут, спасибо

  • @almaz303.
    @almaz303. Рік тому

    топово объясняешь!!!!!!! сделай магазины и скины если уже есть то покажи как добавить джойстик на игру андроид

  • @sanichbg
    @sanichbg Місяць тому +1

    #13:28 вот это скилл...

  • @user-wo8qm7tx2q
    @user-wo8qm7tx2q 2 роки тому +5

    Спасибо за такой контент) проснулся интерес к данной теме)
    Подскажите пожалуйста в чём проблема
    Пишу ровно такой же скрипт spawner, но при добавлении к объекту не появляются поля и unity выдаёт ошибку

    • @h0rNAs
      @h0rNAs  2 роки тому +1

      Скорее всего ошибка именно в правильности написания слов в коде, пересмотри еще раз

    • @user-wo8qm7tx2q
      @user-wo8qm7tx2q 2 роки тому +1

      @@h0rNAs код перепроверил несколько, три раза переписывал заново😅
      Написанный в visual studio такая же история, там даже скрипт player не работал. Из-за разной версии rider может быть проблема?

    • @h0rNAs
      @h0rNAs  2 роки тому +1

      @@user-wo8qm7tx2q По идеи из за версий rider проблем не должно быть, а вот из за версий юнити могут быть
      Но скорее всего просто очень глупая ошибка в коде которую ты не видишь (ибо я не знаю из за чего проблема может быть еще)

    • @user-wo8qm7tx2q
      @user-wo8qm7tx2q 2 роки тому +1

      @@h0rNAs Из rider всё скопировал в studio и всё заработало😅

    • @user-dj6gl9bf3x
      @user-dj6gl9bf3x Рік тому +1

      Привет, нашёл ошибку @Hornas - разработчик игр после GameObject pipe = Instantiate(pipePrefab) нужно поставить точку с запитой. Спасибо за туториалы.

  • @Nubasik_Rubasik
    @Nubasik_Rubasik 3 місяці тому +1

    А какой код написать чтобы персонаж не летал при частом нажатии пробела?

  • @gazzoovstret
    @gazzoovstret 20 днів тому

    Имба

  • @kefir4s
    @kefir4s Рік тому +3

    скажи пожалуйста как ты pipe из Sample scene убирал на 10 минуте 9 секунде

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

      Просто удалил

  • @user-oj2lr9kd3g
    @user-oj2lr9kd3g 4 місяці тому +1

    14:51 Если нет Random(in Unity Engine) Что тогда делать?

  • @almaz303.
    @almaz303. Рік тому +1

    А как сделать чтоб рас в какое-то время место префаба этих труб появлялся другой префаб

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

      Если в кратце, то создать массив этих прейабов и просто перед каждым появлением выбирать рандомный🤪
      Я уверен что ты нифига не понял
      Но впринципе ответ я тут дал, так что можешь посмотреть в интернете реализацию

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

    Как сделать тоже самое только чтобы они не по y шли а по x в низ

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

    Invalid token 'float' in class, record, struct, or interface member declaration Вот такая ошибка вылезла, не могу убрать, проверил все 10 раз и ничего не изменилось. Помогите!

  • @alekseybiryukov7497
    @alekseybiryukov7497 2 роки тому +5

    А зачем в pipe использовать Vector3, если и Vector2 прекрасно работает?

    • @h0rNAs
      @h0rNAs  2 роки тому +2

      По сути можно и Vector2 использовать, но я просто для перестраховки написал Vector3

    • @user-qwerty999
      @user-qwerty999 3 місяці тому +1

      Потому, что поле position типа Vecto3. Vector2 работает потому, что в нем есть фунция преобразования в Vector3. Тоесть каждый раз Vector2 будет конвертироваться в Vector3. Лишняя не нужня операция.

  • @russiaproleague7545
    @russiaproleague7545 6 місяців тому

    Врятли кто ответит, но почему он использует Vector3 а не Vector2 в моменте где он создаёт рандомный спавн труб (в if) 15:36

  • @shiiqweqwe
    @shiiqweqwe 3 місяці тому

    Ребят, понимаю что прошел уже год! Но прошу о помощи, в скрипте Даже Спавнер название не горит и МоноБехавур тоже про тайм и так далее вообще молчу, что я делаю не так? Пишу все делаю как в видео, помогите...

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

    Привет! Подскажи, пожалуйста, что я не так сделала: у меня первый спавн труб двойной получается, дальше все нормально. Спасибо!

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

      Без самого скрипта разобраться сложно
      Скинь скрипт и я попытаюсь помочь🙂

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

      @@h0rNAs
      using UnityEngine;
      public class Spawner : MonoBehaviour
      {
      public GameObject PipePrefab;
      public float timeToSpawn, minYPosition, maxYPosition;
      private float timer;
      private void Update()
      {
      if (timer

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

    на 9.18 минуте *заходим в спавнер и перетаскиваем скрипт спавнер*
    делаю все 1 в 1 , но у м меня когда я перетащил скрипт, не появляются окошки Pipe Prefab и timeToSpawn
    соответственно не могу дальше перетащить наш префаб в pipe Prefab :(((
    почему?

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

      Так иногда бывает когда не прогружается скрипт
      Посмотри сохранил ли ты его в visual studio(если ты ее используешь)
      Если не поможет то пересоздай скрипт

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

    У меня ошибка в pipe
    struct UnityEngine.Vector3
    Representation of 3D vectors and positions.
    CS1955: Невызываемый член "Vector3" не может использоваться как метод

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

      Перед Vector3 не было new. Я его у вас не заметил(мой косяк)

  • @noktoxoxo
    @noktoxoxo 2 місяці тому

    У меня идёт сплошная труба и не разделяется, не знаю что делать

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

    Почему после того как я написал всё в скрипте pipe у меня летит только одна труба, но при этом показывается, что другие тоже спавнятся?

    • @dmitriylyksor5052
      @dmitriylyksor5052 8 днів тому

      Нужно открыть папку Prefab, выделить объект "Pipe" и уже в нем установить значение скорости. таким образом будет применятся значение скорости ДЛЯ ВСЕХ появляющихся объектов, а не только для одного

  • @Lox1s_
    @Lox1s_ 5 місяців тому

    У меня не получается сделатьскрипт Спавнер я все пишу как у тебя но ничего не работает

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

    Почему у меня после написания скрипта для спавне камера перестала видеть объекты и в игре пусто

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

      Скорее всего ты выключил камеру

  • @HumsterRobot
    @HumsterRobot 5 місяців тому

    Почему трубы спавнятся на нулевых координатах

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

    Написал код такой-же как у тебя на спавн pipe но выдает ошибку Assets\Scripts\Spawner.cs(22,31): error CS0103: The name 'instantiate' does not exist in the current context Что делать? Могу скинуть полностью код

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

      using System.Collections;
      using System.Collections.Generic;
      using UnityEngine;
      public class Spawner : MonoBehaviour
      {
      public GameObject pipePrefab;
      public float timeToSpawn;
      private float timer;
      private void Start()
      {
      timer = timeToSpawn;
      }
      private void Update()
      {
      if (timer

    • @h0rNAs
      @h0rNAs  Рік тому +2

      Чтобы избежать таких проблем ставь подсказки для юнити (уж это точно каждый дурак найдет в интернете)
      А так ошибка очень банальная и решается очень просто
      Instantiate пишется с большой буквы
      В следующий раз гугли ошибку

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

      @@h0rNAs

    • @pubg-kw5qj
      @pubg-kw5qj Рік тому

      @@h0rNAs я поставил подсказки и написал такой же код в чем моя проблема блин я не понимаю

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

      Гугли ошибку если она есть)

  • @SMPfanat
    @SMPfanat 8 місяців тому

    Всем привет смотрю на 10 минуте а дальше не могу так как не спавнятся трубы что делать? Я знаю что прошел год с момента выпуска видео но надеюсь на ответ.

    • @SMPfanat
      @SMPfanat 8 місяців тому

      Time To Spawn у меня равно 2 и pipe выбран в Pipe Prefab консоль ошибок не выдает я пытался переписать скрипт но безуспешно😢

  • @PIXEL0110
    @PIXEL0110 Рік тому +2

    У меня вопрос, почему трубы появляются намного правее, чем сам объект Spawner, в не зависимости как по координате X я передвигаю Spawner всё равно по X трубы появляются в одном и том же месте.
    Код Spawner.cs:
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    public class Spawner : MonoBehaviour
    {
    [SerializeField] private float timeToSpawn, minYPosition, maxYPosition;
    [SerializeField] private GameObject pipePrefab;
    private float timer;
    private void Start()
    {
    timer = timeToSpawn;
    }
    private void Update()
    {
    if (timer

  • @user-hq3ec1li2v
    @user-hq3ec1li2v Рік тому

    почему у меня не правильно спавнятся блоки,они у меня спавнятся на определенной высоте,и как бы я не поднимал или не отпускал зеленую стрелку,это не помогает,помогите

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

      Пересмотри мой код спавна внимательнее

    • @user-hq3ec1li2v
      @user-hq3ec1li2v Рік тому

      @@h0rNAs вроде все правильно написал,не знаю,я еще хотел спросить нормально что куб который прыгает,начинает не много двигаться в лево и со временем пропадает с поле зрения

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

    Помоги пж у меня выдаёт ошибку Assets\scripts\spawner.cs(24,39):error CS1955: Non-invocable member'Vector3' cannot be used like a method.пжжж помоги не могу её решить

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

      Без скрипта понять сложно
      Просто загугли

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

      @@h0rNAs ну ок

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

      @@h0rNAs брат я нашёл ошибку я new перед vector3 продолжу делать по твоим урокам это будет моя первая игра, спасибо тебе

  • @souldoos4194
    @souldoos4194 Рік тому +2

    10:43 у меня запустилось но просто синий экран, как это исправить?

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

      Очень скудная информация)

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

      @@h0rNAs так как исправить то?

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

      Он так и не предоставил мне более расширенной информации)

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

      @@h0rNAs у меня такая фигня была, когда я камеру ресетнул и у неё координата Z из минуса в ноль ушла

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

      Как вариант кстати

  • @spotgames2001
    @spotgames2001 2 роки тому +1

    Можно каждый раз код сбрасывать?

    • @h0rNAs
      @h0rNAs  2 роки тому +1

      Я хотел, но там с гитхабом какие то тёрки у меня) Он у меня не хочет работать
      Поэтому думаю как бы мне полный проект щас скинуть

    • @spotgames2001
      @spotgames2001 2 роки тому

      @@h0rNAs А просто в описании код в виде текста оставить нельзя? Просто очень не удобно самому это вводить. А когда появляется какая-то ошибка, приходится пересматривать и искать помарку.

    • @h0rNAs
      @h0rNAs  2 роки тому

      @@spotgames2001 Описание просто слишком огромное получится если каждый скрипт текстом вставлять
      Да и ограничение там всего в 1000 символов
      Поэтому надо что то другое поискать

    • @spotgames2001
      @spotgames2001 2 роки тому

      @@h0rNAs Может в комментариях оставлять? Там в закрепе делать их

    • @h0rNAs
      @h0rNAs  2 роки тому

      ​@@spotgames2001 Ну тоже не вариант, они там огромные и их много

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

    UnassignedReferenceException: The variable pipePrefab of Spawner has not been assigned.
    You probably need to assign the pipePrefab variable of the Spawner script in the inspector.
    UnityEngine.Object.Internal_InstantiateSingle (UnityEngine.Object data, UnityEngine.Vector3 pos, UnityEngine.Quaternion rot) (at :0)
    UnityEngine.Object.Instantiate (UnityEngine.Object original, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation) (at :0)
    UnityEngine.Object.Instantiate[T] (T original, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation) (at :0)
    Spawner.Update () (at Assets/scripts/Spawner.cs:19)
    почему мне такую ошибку выдает,код правильно написал
    using UnityEngine;
    public class Spawner : MonoBehaviour
    {
    public GameObject pipePrefab;
    public float timeToSpawn;
    private float timer;

    private void Start()
    {
    timer = timeToSpawn;
    }
    private void Update()
    {
    if (timer

    • @biber.6081
      @biber.6081 10 місяців тому

      К сожалению не знаю как устранить эту проблему

  • @itzsiris
    @itzsiris 6 місяців тому

    Spawner script:
    using UnityEngine;
    public class Spawner : MonoBehaviour
    {
    public float timeToSpawn, minYPosition, maxYPosition;
    public GameObject pipePrefab;
    private float timer;
    private void Start()
    {
    timer = timeToSpawn;
    }
    private void Update()
    {
    if (timer

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

    Помогите Пожалуйста вот мой код почему у меня после рандомного спавна началось такое что они вообще теперь не спавнятся
    using UnityEngine;
    public class Spawner : MonoBehaviour
    {
    public GameObject pipePrefab;
    public float timeToSpawn, minYPosition, maxYPosition;
    private float timer;

    private void Start()
    {
    timer = timeToSpawn;
    }



    private void Update()
    {
    if (timer

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

      В else мы должны отнимать deltatime а не присваивать

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

      @@h0rNAs все понял спасибо огромное!

  • @Black_Cat_295
    @Black_Cat_295 Місяць тому

    11:21

  • @rekn404
    @rekn404 4 місяці тому

    Спасибо за удаление кода! иаиааааайиииииииииии

  • @_KreSous_
    @_KreSous_ 8 місяців тому

    Привет! Мне очень понравилось как ты объясняешь, не мог бы ты мне помочь с созданием моей игры. Что и как должно быть я придумал, там ничего особо сложного нет, но у меня мало опыта в программированию, но при этом схватываю на лету). Было бы круто созваниваться по дс с тобой, что бы ты мне объянсял мои ошибки. Если что готов заплатить за это)

  • @lantern4290
    @lantern4290 2 роки тому +1

    У меня почему то столбы движутся во первых не плавно а просто спавнятся а во вторых они не проходят через всю карту а просто остаются на месте тоесть они спавнятся на расстоянии 1 клетки друг от друга и все

    • @h0rNAs
      @h0rNAs  2 роки тому +1

      Либо ты плохо объяснил, либо я нифига не понял
      Попробуй пересмотреть внимательнее

    • @lantern4290
      @lantern4290 2 роки тому +1

      @@h0rNAs столбы вместо того что бы двигаться в лево спавнятся в лево на расстоянии 1 клетки друг от друга хз как объяснить может быть проблема в том что я использую VS а не rider

    • @h0rNAs
      @h0rNAs  2 роки тому +1

      @@lantern4290 Программное обеспечение не играет роль на функции кода, они облегчают написание его
      Дело в невнимательности(это все проходят и никуда оно не денется)

    • @lantern4290
      @lantern4290 2 роки тому +1

      @@h0rNAs эту проблему я решил но появилась еще одна иногда моя "птица" вращается и когда нажимаешь пробел она улетает в ту сторону в которую отклонилась

    • @h0rNAs
      @h0rNAs  2 роки тому +1

      @@lantern4290 В компоненте rigidbody у птички отключи вращение
      Опять невнимательно смотришь)

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

    NullReferenceException: Object reference not set to an instance of an object
    Unity.PlasticSCM.Editor.PlasticWindow.ClosePlasticWindow (Unity.PlasticSCM.Editor.PlasticWindow window) (at Library/PackageCache/com.unity.collab-proxy@1.17.6/Editor/PlasticSCM/PlasticWindow.cs:1043)
    Unity.PlasticSCM.Editor.PlasticWindow.OnDisable () (at Library/PackageCache/com.unity.collab-proxy@1.17.6/Edi
    что это за ошибка я её не могу исправить

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

      😮
      Я в шоке
      Попробуй перезапусти юнити
      Если не исправится то загугли

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

      @@h0rNAs перезашел в юнити, не помогло

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

      @@h0rNAs Library\PackageCache\com.unity.collab-proxy@1.17.6\Editor\PlasticSCM\PlasticWindow.cs(1043,24): error CS0029: Cannot implicitly convert type 'void' to 'object' вот это теперь выдает

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

      Попробуй вообще переустановить юнити
      Вот это 100% должно помочь

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

      @@h0rNAs переустановил, ошибка не пропала