Как сделать игру на 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 с нуля, как сделать игру с полнейшего нуля - Ігри
Мужик не понял как избавиться от спама прыжка и решил сделать флеппибирд
"В следующем видео я обьясню как это исправить" ммм спасиьо за обьяснение как это исправить
Сложно нажать на видео и посмотреть там?
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);
}
}
не, Он просто обещал исправить бесконечный прыжок, а потом просто решил сделать флепибердс)@@darkknimperial2435
Заметил, что трубы созданные остаются, нужно создать блок, который будет очищать объекты которые ушли за заданные координаты, надеюсь увижу это в следующих уроках
Наконец то нашел время посмотреть видео! Спасибо за туториалы!😊
Очень классно объясняешь! Спасибо огромное за ролики! 😊
Блин, под эту музыку такой кайф слушать
а почему у меня основной куб, если долго играть начинает съезжать влево?
Молодец, хорошо объясняешь для новичков. Но делать поля public, которые используются только внутри одного класс - моветон. Если хочется их редактировать из Unity, то делай их с помощью [SerializeField].
А я в следующих уроков рассказал что нужно избавляться от public :)
Спасибо за приятные слова!
Большое спасибо за урок !!!
Ты очень крут, спасибо
топово объясняешь!!!!!!! сделай магазины и скины если уже есть то покажи как добавить джойстик на игру андроид
#13:28 вот это скилл...
Спасибо за такой контент) проснулся интерес к данной теме)
Подскажите пожалуйста в чём проблема
Пишу ровно такой же скрипт spawner, но при добавлении к объекту не появляются поля и unity выдаёт ошибку
Скорее всего ошибка именно в правильности написания слов в коде, пересмотри еще раз
@@h0rNAs код перепроверил несколько, три раза переписывал заново😅
Написанный в visual studio такая же история, там даже скрипт player не работал. Из-за разной версии rider может быть проблема?
@@user-wo8qm7tx2q По идеи из за версий rider проблем не должно быть, а вот из за версий юнити могут быть
Но скорее всего просто очень глупая ошибка в коде которую ты не видишь (ибо я не знаю из за чего проблема может быть еще)
@@h0rNAs Из rider всё скопировал в studio и всё заработало😅
Привет, нашёл ошибку @Hornas - разработчик игр после GameObject pipe = Instantiate(pipePrefab) нужно поставить точку с запитой. Спасибо за туториалы.
А какой код написать чтобы персонаж не летал при частом нажатии пробела?
Имба
скажи пожалуйста как ты pipe из Sample scene убирал на 10 минуте 9 секунде
Просто удалил
14:51 Если нет Random(in Unity Engine) Что тогда делать?
А как сделать чтоб рас в какое-то время место префаба этих труб появлялся другой префаб
Если в кратце, то создать массив этих прейабов и просто перед каждым появлением выбирать рандомный🤪
Я уверен что ты нифига не понял
Но впринципе ответ я тут дал, так что можешь посмотреть в интернете реализацию
Как сделать тоже самое только чтобы они не по y шли а по x в низ
Invalid token 'float' in class, record, struct, or interface member declaration Вот такая ошибка вылезла, не могу убрать, проверил все 10 раз и ничего не изменилось. Помогите!
А зачем в pipe использовать Vector3, если и Vector2 прекрасно работает?
По сути можно и Vector2 использовать, но я просто для перестраховки написал Vector3
Потому, что поле position типа Vecto3. Vector2 работает потому, что в нем есть фунция преобразования в Vector3. Тоесть каждый раз Vector2 будет конвертироваться в Vector3. Лишняя не нужня операция.
Врятли кто ответит, но почему он использует Vector3 а не Vector2 в моменте где он создаёт рандомный спавн труб (в if) 15:36
Ребят, понимаю что прошел уже год! Но прошу о помощи, в скрипте Даже Спавнер название не горит и МоноБехавур тоже про тайм и так далее вообще молчу, что я делаю не так? Пишу все делаю как в видео, помогите...
Привет! Подскажи, пожалуйста, что я не так сделала: у меня первый спавн труб двойной получается, дальше все нормально. Спасибо!
Без самого скрипта разобраться сложно
Скинь скрипт и я попытаюсь помочь🙂
@@h0rNAs
using UnityEngine;
public class Spawner : MonoBehaviour
{
public GameObject PipePrefab;
public float timeToSpawn, minYPosition, maxYPosition;
private float timer;
private void Update()
{
if (timer
на 9.18 минуте *заходим в спавнер и перетаскиваем скрипт спавнер*
делаю все 1 в 1 , но у м меня когда я перетащил скрипт, не появляются окошки Pipe Prefab и timeToSpawn
соответственно не могу дальше перетащить наш префаб в pipe Prefab :(((
почему?
Так иногда бывает когда не прогружается скрипт
Посмотри сохранил ли ты его в visual studio(если ты ее используешь)
Если не поможет то пересоздай скрипт
У меня ошибка в pipe
struct UnityEngine.Vector3
Representation of 3D vectors and positions.
CS1955: Невызываемый член "Vector3" не может использоваться как метод
Перед Vector3 не было new. Я его у вас не заметил(мой косяк)
У меня идёт сплошная труба и не разделяется, не знаю что делать
Почему после того как я написал всё в скрипте pipe у меня летит только одна труба, но при этом показывается, что другие тоже спавнятся?
Нужно открыть папку Prefab, выделить объект "Pipe" и уже в нем установить значение скорости. таким образом будет применятся значение скорости ДЛЯ ВСЕХ появляющихся объектов, а не только для одного
У меня не получается сделатьскрипт Спавнер я все пишу как у тебя но ничего не работает
Почему у меня после написания скрипта для спавне камера перестала видеть объекты и в игре пусто
Скорее всего ты выключил камеру
Почему трубы спавнятся на нулевых координатах
Написал код такой-же как у тебя на спавн pipe но выдает ошибку Assets\Scripts\Spawner.cs(22,31): error CS0103: The name 'instantiate' does not exist in the current context Что делать? Могу скинуть полностью код
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
Чтобы избежать таких проблем ставь подсказки для юнити (уж это точно каждый дурак найдет в интернете)
А так ошибка очень банальная и решается очень просто
Instantiate пишется с большой буквы
В следующий раз гугли ошибку
@@h0rNAs
@@h0rNAs я поставил подсказки и написал такой же код в чем моя проблема блин я не понимаю
Гугли ошибку если она есть)
Всем привет смотрю на 10 минуте а дальше не могу так как не спавнятся трубы что делать? Я знаю что прошел год с момента выпуска видео но надеюсь на ответ.
Time To Spawn у меня равно 2 и pipe выбран в Pipe Prefab консоль ошибок не выдает я пытался переписать скрипт но безуспешно😢
У меня вопрос, почему трубы появляются намного правее, чем сам объект 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
почему у меня не правильно спавнятся блоки,они у меня спавнятся на определенной высоте,и как бы я не поднимал или не отпускал зеленую стрелку,это не помогает,помогите
Пересмотри мой код спавна внимательнее
@@h0rNAs вроде все правильно написал,не знаю,я еще хотел спросить нормально что куб который прыгает,начинает не много двигаться в лево и со временем пропадает с поле зрения
Помоги пж у меня выдаёт ошибку Assets\scripts\spawner.cs(24,39):error CS1955: Non-invocable member'Vector3' cannot be used like a method.пжжж помоги не могу её решить
Без скрипта понять сложно
Просто загугли
@@h0rNAs ну ок
@@h0rNAs брат я нашёл ошибку я new перед vector3 продолжу делать по твоим урокам это будет моя первая игра, спасибо тебе
10:43 у меня запустилось но просто синий экран, как это исправить?
Очень скудная информация)
@@h0rNAs так как исправить то?
Он так и не предоставил мне более расширенной информации)
@@h0rNAs у меня такая фигня была, когда я камеру ресетнул и у неё координата Z из минуса в ноль ушла
Как вариант кстати
Можно каждый раз код сбрасывать?
Я хотел, но там с гитхабом какие то тёрки у меня) Он у меня не хочет работать
Поэтому думаю как бы мне полный проект щас скинуть
@@h0rNAs А просто в описании код в виде текста оставить нельзя? Просто очень не удобно самому это вводить. А когда появляется какая-то ошибка, приходится пересматривать и искать помарку.
@@spotgames2001 Описание просто слишком огромное получится если каждый скрипт текстом вставлять
Да и ограничение там всего в 1000 символов
Поэтому надо что то другое поискать
@@h0rNAs Может в комментариях оставлять? Там в закрепе делать их
@@spotgames2001 Ну тоже не вариант, они там огромные и их много
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
К сожалению не знаю как устранить эту проблему
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
Помогите Пожалуйста вот мой код почему у меня после рандомного спавна началось такое что они вообще теперь не спавнятся
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
В else мы должны отнимать deltatime а не присваивать
@@h0rNAs все понял спасибо огромное!
11:21
Спасибо за удаление кода! иаиааааайиииииииииии
Привет! Мне очень понравилось как ты объясняешь, не мог бы ты мне помочь с созданием моей игры. Что и как должно быть я придумал, там ничего особо сложного нет, но у меня мало опыта в программированию, но при этом схватываю на лету). Было бы круто созваниваться по дс с тобой, что бы ты мне объянсял мои ошибки. Если что готов заплатить за это)
У меня почему то столбы движутся во первых не плавно а просто спавнятся а во вторых они не проходят через всю карту а просто остаются на месте тоесть они спавнятся на расстоянии 1 клетки друг от друга и все
Либо ты плохо объяснил, либо я нифига не понял
Попробуй пересмотреть внимательнее
@@h0rNAs столбы вместо того что бы двигаться в лево спавнятся в лево на расстоянии 1 клетки друг от друга хз как объяснить может быть проблема в том что я использую VS а не rider
@@lantern4290 Программное обеспечение не играет роль на функции кода, они облегчают написание его
Дело в невнимательности(это все проходят и никуда оно не денется)
@@h0rNAs эту проблему я решил но появилась еще одна иногда моя "птица" вращается и когда нажимаешь пробел она улетает в ту сторону в которую отклонилась
@@lantern4290 В компоненте rigidbody у птички отключи вращение
Опять невнимательно смотришь)
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 Library\PackageCache\com.unity.collab-proxy@1.17.6\Editor\PlasticSCM\PlasticWindow.cs(1043,24): error CS0029: Cannot implicitly convert type 'void' to 'object' вот это теперь выдает
Попробуй вообще переустановить юнити
Вот это 100% должно помочь
@@h0rNAs переустановил, ошибка не пропала