Doodle Jump была одной из первых мобильных игр, получивших широкую популярность и имевших огромный успех. Узнайте, как создавать основы, в этом 5-минутном руководстве на Unity. Полезный совет: если видео слишком быстрое, включите его на скорости 0,5 и почаще делайте паузы! Сложно было смонтировать, извините Хотите поддержать канал? Угостите меня кофе :
Поставьте лайк, если видео вам понравилось, это очень помогает каналу! ПОДПИШИТЕСЬ на канал, вы сделаете меня счастливее. БОЛЬШЕ 5-минутных обучающих материалов: • 5 Minute Games Присоединяйтесь к нашему DISCORD-СЕРВЕРУ: / discord У нас есть каналы, где вам помогут с вашими проблемами! 0:00 Фоновое изображение Я поискал в Google ресурсы Doodle Jump и нашёл фон, спрайт игрока и спрайт платформы. ИСПОЛЬЗУЙТЕ ЛЮБЫЕ ГРАФИЧЕСКИЕ РЕСУРСЫ! Что касается фона, мы просто добавляем его на сцену, сбрасываем его трансформацию и затем прикрепляем его как дочерний игровой объект к основной камере. Благодаря этому фон всегда будет следовать за камерой. 0:017 Настройка игрока Мы перетаскиваем спрайт игрока, а затем присоединяем BoxCollider2D. С помощью кнопки редактирования коллайдера можно перетащить края BoxCollider так, чтобы обнаруживать столкновения только у основания спрайта. Это может зависеть от используемого спрайта игрока. Мы не хотим, чтобы коллайдер был слишком маленьким, иначе могут возникнуть ошибки при расчёте столкновений, поэтому оставьте небольшой буфер. Затем мы присоединяем Rigidbody2D и меняем режим обнаружения столкновений с «Discrete» на «Continuous». Это обеспечивает более чистый алгоритм обнаружения, но при этом требует больших вычислительных мощностей, но в данном случае, когда важна точность, это того стоит. Затем мы добавляем ограничение, чтобы заморозить вращение по оси Z, чтобы наш спрайт не вращался сам по себе и не нарушал код движения. Наконец, мы создаём новый скрипт на C# PlayerController и добавляем его к игровому объекту игрока. 1:05 Настройка платформы Мы перетаскиваем спрайт платформы, и для платформы мы хотим, чтобы игрок мог проходить сквозь её нижнюю часть, но обнаруживал столкновения сверху. Для этого нам нужно добавить компонент EdgeCollider2D, а затем компонент Platform Effector 2D. Для EdgeCollider2D мы хотим включить опцию «Используется эффектором», а для Platform Effector 2D — убедиться, что опция «Использовать одностороннее движение» отмечена по умолчанию. В результате вы увидите дугу в 180 градусов, исходящую из верхней части платформы. Это означает, что система будет обнаруживать столкновения только внутри этой дуги. Снова добавляем новый скрипт C# Platform и добавляем его к игровому объекту платформы. 1:34 Создание скрипта камеры Мы создаём и добавляем новый скрипт C# CameraFollow к основной камере. 1:40 Создание GameManager Мы создаём пустой игровой объект, называем его GameManager, а затем создаём для этого игрового объекта новый скрипт C# с именем GameManager. 1:50 Префаб платформы Затем мы перетаскиваем наш игровой объект платформы из иерархии в папку Assets, что создаст префаб платформы. 1:59 Скрипт PlayerController Для движения игрока мы хотим иметь возможность двигаться только влево и вправо, а также настраивать скорость движения с помощью переменной MoveSpeed. Для управления движением нам нужна ссылка на наш Rigidbody2D. В Update мы хотим отслеживать любые входные данные игрока, поэтому сохраняем нашу входную ось «Горизонталь» в приватной переменной. В FixedUpdate мы хотим обрабатывать физические расчёты в нашем Rigidbody2D, поэтому, используя полученные данные из Update, мы обновляем нашу текущую скорость. 2:52 Скрипт платформы В нашем скрипте платформы мы хотим сохранить переменную типа float JumpForce, которую можно настраивать, а затем, по сути, OnCollisionEnter2D, мы хотим, чтобы наш игрок подпрыгивал под действием силы прыжка, но только когда игрок приземляется сверху. В противном случае это может вызвать проблемы, если мы используем ускорение, когда игрок проходит через нижнюю часть платформы. 3:36 Скрипт камерыFollow Мы сохраняем целевую переменную Transform для отслеживания. Затем в нашем методе LateUpdate мы создаём новый Vector3, используя оси X и Z камеры, но ось Y игрока, и присваиваем этот новый vector3 положению камеры. Мы хотим сделать это только тогда, когда игрок выходит за пределы поля зрения камеры, чтобы мы могли панорамировать камеру вверх, следуя за ним. 4:14 Скрипт GameManager На старте мы хотим процедурно сгенерировать случайный уровень. Мы сохраняем количество платформ, которые хотим создать, а затем в цикле For создаём X платформ, постоянно увеличивая значение Y на небольшую величину (от 0,5 до 2) и выбирая случайное значение X. С моими настройками, когда я перетаскивал платформу к краям игрового экрана, значения были около -5 и 5, поэтому я использовал это значение. Вам, возможно, придётся использовать другие значения! Затем мы создаём платф...