Krististudio.ru

Онлайн образование
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Уроки юнити 2д

Unity для 2D

Большинство разработчиков 2D создают, запускают свою игру и получают прибыль с помощью платформы Unity. Узнайте, что она предлагает, и как вы можете извлечь из этого выгоду.

Сообщество, инструменты, ресурсы

Больше чем просто платформа. Unity дает все необходимое для разработки качественного контента, повышения производительности и связи с аудиторией.

Множество ресурсов

Документация, обучающие материалы, форумы и курсы

Крупнейший магазин ресурсов и инструментов

Тысячи ресурсов, ускоряющие разработку

Поддержка от ведущих игровых студий

Вдохновляйтесь, учитесь, нанимайте или находите работу

Поддержка 2D/3D

Упрощает процесс разработки в 2D, 3D или в их сочетании

Богатый функционал,

Инструменты для работы со сценами, анимацией, системами частиц и звуком

Подстраивается

Подстраивается под особенности рабочего процесса и ваши предпочтения

Нативная высокая производительность и графика

Для мобильных устройств с поддержкой Metal и Vulkan

Оптимизируйте доход и поддерживайте интерес пользователей

Благодаря встроенным IAP, рекламной сети и средствам аналитики в реальном времени

Расширяйте аудиторию на всех платформах

Простая разработка и издание на всех крупнейших и развивающихся мобильных платформах

Исследуйте новые возможности

Портируйте самые успешные мобильные игры на ПК, консоли или мобильные VR-устройства

  • Полный контроль над размером файлов
  • Работайте в любимом и хорошо знакомом вам редакторе
  • Непревзойденная производительность и масштабируемость

Успешные создатели 2D рассказывают о том, как их разноплановая команда любит работать с Unity и почему они не могут даже представить переход на другую платформу.

Успешные разработчики 2D-игр полагаются на Unity

Свет, камера, приключение

Игра Forgotton Anne — это поистине амбициозный проект. Она объединяет в себе 500-страничный сценарий, оригинальный саундтрек, исполненный Датским филармоническим оркестром, и анимации уровня работ студии Ghibli, созданные командой выходцев из мультипликационной индустрии. Узнайте, как ThroughLine Games использовали Unity, чтобы создать один из самых высококачественных и кинематографичных приключенческих 2D-платформеров.

После смерти все становится только лучше

Узнайте, как Unity помогла студии из трех человек создать увлекательный двухмерный платформер с 93 уровнями, 15 анимационными сценами и 3 режимами сложности, который завоевал сердца игроков и привлек внимание инвесторов.

Свобода для экспериментов

Узнайте, как гибкость и богатый инструментарий Unity помог инди-разработчику Стю Денману воплотить свою идею в гипнотизирующую и увлекательную игру более чем со 160 уровнями.

Двухмерная ретро-игра для VR

У Аны Рибейро была идея создать ретро-игру в стиле GameBoy для современной платформы VR. Узнайте, как с Unity ей удалось решить технические задачи, подготовить продукт к выпуску и оптимизировать его.

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

Узнайте, как с Unity команде из 14 разработчиков различного профиля, живущих в разных уголках планеты, удалось объединить усилия и создать интересный сюжет с ярким художественным оформлением и разработать увлекательный игровой процесс для великолепной двухмерной игры в жанре hack-and-slash.

Маленькая команда, большие амбиции

С помощью Unity программист-самоучка Мауро Фанелли и его единомышленник, художник Андреа Геллато, смогли создать эту невероятно интересную игру с прекрасной векторной графикой, нарисованной от руки. Узнайте об этом подробнее.

Неожиданный поворот в 2,5D

В этом необычном платформере Zoink реализовали инновационную физику, которая позволяет игроку переключаться межу двумя параллельными мирами. Узнайте, как они этого добились.

Hearthstone вывела всеми любимую и получившую широкое признание вселенную Warcraft на мобильные платформы. Разработчики перешли с движка собственной разработки на Unity, что позволило им быстрее адаптироваться к ускоренному графику разработки и добиться успеха со своей первой мобильной игрой.

Скрупулезная проработка графики

Cuphead — это однопользовательский / кооперативный платформер жанра run-and-gun, вдохновленный мультфильмами 1930-х годов, нарисованный вручную и озвученный оригинальными джазовыми композициями.

Загадочный и глубокий мир

Главная сила Night in the Woods в проработке персонажей и диалогов, а также стильной двумерной графике. Это интерактивное повествование начинается в городке под названием Possum Springs и помещает игрока в мир экзистенциальных и по-темному комичных историй.

Проект появился в рамках геймджема, но потом SFB Games совместно с Nintendo перенесли его на Unity и выпустили для Nintendo Switch. Эта головоломка рассчитана на совместную игру и решение простых (но только на первый взгляд!) задач и приносит невероятное удовольствие игрокам.

Управляем природой

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

2D-инструмент, меняющий процесс создания уровней

Tilemap и другие инструменты помогли двум разработчикам из разных стран в свое свободное время создать удивительный 2D-платформер, в котором все — не то, чем кажется. Узнайте, как они этого добились.

Читать еще:  Уроки создания игр на андроид

От независимых разработчиков до больших студий — Unity используют по всему миру для создания уникальных игр и контента.

Студии, стоящие за шедеврами вроде Hearthstone и Hitman Go, рассказывают о переходе на Unity, в том числе о:

  • влиянии на рабочий процесс;
  • технических рекомендациях;
  • окупаемости и выгоде;
  • внедрении.

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

Разработка 2D игры на Unity (1/5) «Знакомство с редактором»

Привет, пикабу! Сим постом, начну небольшую серию «уроков» по созданию двухмерной игры на движке Unity. Надеюсь, кому-то будет интересно. И сразу скажу, что в первом уроке мы не будем кодить. Это вводный урок. Поехали!

А создавать мы, собственно, будем упрощённую копию игры «Электроника». Это та самая советская игра, в которой волк из мультфильма «Ну погоди» ловит яйца.

Для начала, давайте рассмотрим инструментарий, который нам понадобится:

1 — Игровой движок Unity. Это два в одном. И движок и визуальный редактор.
Скачать Unity можно бесплатно, на официальном сайте unity3d.com.
2 — Любой редактор растровой графики, поддерживающий альфа каналы. То есть позволяющий создавать прозрачное изображение. В моём случае это Photoshop.
3 — Визуальная среда разработки, поддерживающая язык C#. По факту, можно кодить и в блокноте. Но визуальный редактор сильно ускоряет процесс. Так, как он имеет подсветку синтаксиса, подсказки, а возможно даже и проверку валидности написанного нами кода. Я пользуюсь Visual Studio. По умолчанию с юнити поставляется Mono Develop.

Всё скачали? Поставили? Отлично!

Давайте посмотрим, чем нам ещё может быть полезен сайт unity3d.com.

1 — Обучающие материалы (unity3d.com/ru/learn/tutorials).
В этом разделе вы можете найти множество видео-уроков с примерами кода, разделённые на различные категории. Полностью изучив этот раздел, вы уже сможете создать что нибудь интересная. Но есть и минус — большинство материалов на английском.
2 — Руководство по движку ( http://docs.unity3d.com/ru/current/Manual/ ).
Практически полностью русифицированный раздел, в котором можно найти ответы на большинство возникающих вопросов. И не только у новичков. Но кому я это рассказываю? Настоящие кулхацкеры и гамедевелоперы не читают документацию =)
3 — API скриптов ( http://docs.unity3d.com/ru/current/ScriptReference/ ).
А вот этот раздел я всё таки советую добавить в закладки. Когда вы поймёте основы скриптинга в Unity и поймёте, по какому принципу можно обращаться к объектам и свойствам, вам можно будет не мучать гугл глупыми вопросами, а сразу идти и курить мануалы на оф. сайте. Так будет проще, ибо гугл не содержит ответов на действительно серьёзные вопросы.

С этим разобрались. Давайте запустим редактор.

Для начала, давайте узнаем, с чем нам придётся работать. На картинке выше — окно редактора Unity, пятой версии. Прошу заметить, что стандартный вид данного окна — отличается от того, что вы видите у меня. Просто потому, что мне так удобнее. Для удобства повествования я выделил в редакторе пять областей. И стрелочкой указал на ещё одно важное место. Давайте посмотрим, что есть что:

1 — Окно иерархии (hierarchy). В этом окне будут размещаться все те элементы, которые вы поместите на сцену. Каждый из этих элементов будет являться 3D объектом и иметь свое положение в пространстве вашей игры.
2 — Окно сцены (scene) и окно игры (game). Именно тут вы сможете рассмотреть создаваемое вами игровое пространство. Отличаются они тем, что по окну сцены вы можете свободно перемещаться и изменять вид (с этим сильно помогут стрелочки, что находятся прямо под моей дойкой). А в окне Game, вы видите игру так, как будет её видеть игрок.
Сейчас в этом окне у меня расположена сцена из стрелялки, сделанная в сеттинге «Марио». Я снимаю видео-уроки по её созданию. Да, квадратно, да не красиво. Это обучающий материал)

3 — Окно проекта (project). Тут будут располагаться все исходники нашего проекта. Это окно, по своему содержанию, полностью соответствует папке «Assets», в корневой директории вашего проекта. А это значит, что все новые файлы вы можете добавлять и туда, и туда.

4 — Инспектор (inspector). В этом окне отображаются все свойства выбранного элемента.
5 — Консоль (console). В этом окне будут отображаться все ошибки, а так же лог, если мы вдруг будем что-то в коде дебажить. Теоретически — это окно можно не держать открытым постоянно. Но я программист, поэтому этим окошком пользуюсь всегда.
Там же, во вкладках, у меня расположены окна анимаций (animator и animation). В этих окошках мы будем анимировать объекты. Но в этой серии уроков анимации мы не коснёмся.

Читать еще:  Вязание спицами котошапки видео уроки

6 — Кнопки воспроизведения проекта. Ражимаем «Play» и можем прямо в окошке «Game» поиграть в нашу игру.

На этом первый урок окончен. На следующем мы с вами подготовим исходники для проекта и соберём нашу сцену. Подписывайтесь, чтобы не пропустить! 😉

Туториал 5: 2Д игра платформер (урок для начинающих). Часть 2.

Введение:

Как сделать стену:

Как собирать и подсчитывать монеты:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CoinController : MonoBehaviour <

//звук сбора монеты
public AudioClip CoinSound;
//переменная количества собранных монет
public int coin;

//запустится если collider2D попал в триггер
void OnTriggerEnter2D ( Collider2D other) <
//проверка, имеет ли попавший объект тэг Coin
if (other.tag == «Coin» ) <
//увеличить счетчик монет
coin = coin + 1 ;
//проиграть звук поднятия монеты на позиции крысы
AudioSource .PlayClipAtPoint (CoinSound, transform.position);
//удалить монету из сцены
Destroy (other.gameObject);
>
>
>

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//эта библиотека нужна для работы с интерфейсом
using UnityEngine.UI;

public class CoinController : MonoBehaviour <

//ссылка на объект с текстом
public GameObject TextObject;
//ссылка на текстовый компонент
Text textComponent;
//звук поднятия монеты
public AudioClip CoinSound;
//переменная подсчета монет
public int coin;

//запустится один раз при запуске скрипта
void Start () <
//делаем линк на текстовый компонент, который находится на текстовом объекте
textComponent = TextObject.GetComponent ();
>

//запустится если collider2D попал в триггер
void OnTriggerEnter2D ( Collider2D other) <
//проверка, имеет-ли объект тэг Coin
if (other.tag == «Coin» ) <
//увеличить переменную подсчета монет
coin = coin + 1 ;
//записать в текст результат счета монет, преобразованный в текстовую переменную
textComponent.text = coin.ToString();
//проиграть звук поднятия монеты на позиции крысы
AudioSource .PlayClipAtPoint (CoinSound, transform.position);
//удалить монету из сцены
Destroy (other.gameObject);
>
>
>

Как сделать яму:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//это библиотека для работы со сценами
using UnityEngine.SceneManagement;

public class DeadEndController : MonoBehaviour <

//запустится если 2D collider попал в триггер
void OnTriggerEnter2D ( Collider2D other) <
//проверка, имеет ли объект тэг Player
if (other.tag == «Player» ) <
//ппосмотреть название текущей сцены и загрузить её (reload)
SceneManager .LoadScene ( SceneManager .GetActiveScene().name);
>
>
>

Как сделать простого врага:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//библиотека для управления сценами
using UnityEngine.SceneManagement;

public class MushroomController : MonoBehaviour <

//как далеко гриб может отойти от начальной точки
public float distanceToRun;
//скорость движения
public float speed;
//направление взгляда гриба
public bool isLookingLeft = true ;
//стартовая позиция
Vector3 startPos;
//линк на компонент Rigidbody2D
Rigidbody2D rb;

//выполнится 1 раз при старте игры
void Start () <
//делаем линк на Rigidbody2D компонент
rb = GetComponent ();
//запоминаем стартовую точку гриба
startPos = transform.position;
//будем сравнивать квадрат вектора расстояния с квадратом расстояния
//так как извлечение корня медленный процесс
distanceToRun = distanceToRun * distanceToRun;
>

//выполняется на каждом фиксированном интервале
void FixedUpdate () <
//проверить, смотрит-ли гриб влево
if (isLookingLeft) <
//посчитать вектор направления от стартовой точки к грибу
Vector2 dist = transform.position — startPos;
//проверить, что гриб слева от стартовой точки
//и расстояние между грибом и стартовой точкой больше разрешенного удаления
if (transform.position.x distanceToRun) <
//вызвать функцию поворота гриба
TurnTheMushroom ();
//начать движение направо
rb.velocity = new Vector2 (speed, rb.velocity.y);
//если проверка была негативной
> else <
//продолжить движение влево
rb.velocity = new Vector2 (-speed, rb.velocity.y);
>
>
//проверить, что гриб смотрит вправо
if (!isLookingLeft) <
//посчитать вектор направления от стартовой точки к грибу
Vector2 dist = transform.position — startPos;
//проверить, что гриб справа от стартовой точки
///и расстояние между грибом и стартовой точкой больше разрешенного удаления
if (transform.position.x > startPos.x && dist.sqrMagnitude > distanceToRun) <
//вызвать функцию поворота гриба
TurnTheMushroom ();
//начать движение налево
rb.velocity = new Vector2 (-speed, rb.velocity.y);
//если проверка была негативной
> else <
//продолжить движение направо
rb.velocity = new Vector2 (speed, rb.velocity.y);
>
>
>
//функция поворота гриба
void TurnTheMushroom ()
<
//инвертировать (изменить на противоположный) указатель направления взгляда
isLookingLeft = !isLookingLeft;
//повернуть гриб
transform.localScale = new Vector3 (transform.localScale.x * -1 , transform.localScale.y, transform.localScale.z);
>

//запустится, если коллайдер коснулся другого коллайдера
void OnCollisionEnter2D ( Collision2D other) <
//проверить, что у коллайдера тэг Player
if (other.collider.gameObject.tag == «Player» ) <
//посмотреть имя загруженной сцены и загрузить такую сцену (reload)
SceneManager .LoadScene ( SceneManager .GetActiveScene().name);
>
>

//запустится, если другой коллайдер попал в триггер
void OnTriggerEnter2D ( Collider2D other) <
//проверить, что у коллайдера тэг Player
if (other.tag == «Player» ) <
//удалить гриб
Destroy (gameObject);
>
>
>

Читать еще:  Уроки си с нуля

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ExplosionsDestroyer : MonoBehaviour <

//как долго взрыв будет в сцене
public float timeToDestroy;

//выполнится один раз при старте скрипта
void Start () <
//удалить взрыв из сцены
Destroy (gameObject, timeToDestroy);
>
>

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//библиотека для управления сценами
using UnityEngine.SceneManagement;

public class MushroomController : MonoBehaviour <

//префаб взрыва
public GameObject Explosion;
//звук взрыва
public AudioClip Boom;
//как далеко гриб может отойти от начальной точки
public float distanceToRun;
//скорость движения гриба
public float speed;
//направление взгляда гриба
public bool isLookingLeft = true ;
//стартовая позиция гриба
Vector3 startPos;
//линк на компонент Rigidbody2D
Rigidbody2D rb;

//выполнится один раз при старте гриба
void Start () <
//делаем линк на компонент Rigidbody2D
rb = GetComponent ();
//запоминаем стартовую позицию гриба
startPos = transform.position;
//будем сравнивать квадрат вектора расстояния с квадратом расстояния
//так как извлечение корня медленный процесс
distanceToRun = distanceToRun * distanceToRun;
>

//выполняется на каждом фиксированном интервале
void FixedUpdate () <
//проверить, что гриб смотрит налево
if (isLookingLeft) <
//посчитать вектор направления от стартовой точки к грибу
Vector2 dist = transform.position — startPos;
//проверить, что гриб слева от стартовой точки
//и расстояние между грибом и стартовой точкой больше разрешенного удаления
if (transform.position.x distanceToRun) <
//вызвать функцию поворота
TurnTheMushroom ();
//начать движение направо
rb.velocity = new Vector2 (speed, rb.velocity.y);
//если проверка была отрицательной
> else <
//продолжить движение налево
rb.velocity = new Vector2 (-speed, rb.velocity.y);
>
>
//проверить, что гриб смотрит направо
if (!isLookingLeft) <
//посчитать вектор направления от стартовой точки к грибу
Vector2 dist = transform.position — startPos;
//проверить, что гриб справа от стартовой точки
//и расстояние между грибом и стартовой точкой больше разрешенного удаления
if (transform.position.x > startPos.x && dist.sqrMagnitude > distanceToRun) <
//вызвать функцию поворота
TurnTheMushroom ();
//начать движение налево
rb.velocity = new Vector2 (-speed, rb.velocity.y);
//если проверка была отрицательной
> else <
//продолжить движение направо
rb.velocity = new Vector2 (speed, rb.velocity.y);
>
>
>
//функция поворота гриба
void TurnTheMushroom ()
<
//изменить указатель направления взгляда на противоположный
isLookingLeft = !isLookingLeft;
//повернуть гриб
transform.localScale = new Vector3 (transform.localScale.x * -1 , transform.localScale.y, transform.localScale.z);
>

///запустится, если коллайдер коснулся другого коллайдера
void OnCollisionEnter2D ( Collision2D other) <
//проверить, что у коллайдера тэг Player
if (other.collider.gameObject.tag == «Player» ) <
//посмотреть имя загруженной сцены и загрузить такую сцену (reload)
SceneManager .LoadScene ( SceneManager .GetActiveScene().name);
>
>

//запустится, если другой коллайдер попал в триггер
void OnTriggerEnter2D ( Collider2D other) <
//проверить, что у коллайдера тэг Player
if (other.tag == «Player» ) <
//спавн взрыва
Instantiate (Explosion, transform.position, Quaternion .identity);
//проиграть звук взрыва
AudioSource .PlayClipAtPoint (Boom, transform.position);
//удалить гриб
Destroy (gameObject);
>
>
>

Восприятие звука:

Как сделать движущуюся платформу:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlatformMoving : MonoBehaviour <

//скорость движения платформы
public float speed;
//позиция, где платформа должна повернуть назад
public Transform endPoint;
//позиция начала движения
Vector3 startPoint;
//ссылочная переменная для компонента Rigidbody2D
Rigidbody2D rb;
//скорость платформы в текущий момент
float currentSpeed;

//выполнится при запуске скрипта
void Start () <
//запомнит стартовую точку платформы
startPoint = transform.position;
//сделать ссыдку на Rigidbody2D
rb = GetComponent ();
//начальное направление движения
currentSpeed = speed;
>

//выполнятся через интервалы
void FixedUpdate () <
//проверка, находится-ли платформа выше конечной точки
if (transform.position.y > endPoint.position.y)
//скорость для вектора движения вниз
currentSpeed = -speed;
//проверка, находится-ли платформа ниже начальной точки
if (transform.position.y < startPoint.y)
//скорость для вектора движения вверх
currentSpeed = speed;
//направить платформу по вектору движения
rb.velocity = new Vector3 ( 0 , currentSpeed, 0 );
>
>

Как добавить физические объекты:

Конец уровня:

Как сделать движущийся фон с эффектом параллакс:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Parallax : MonoBehaviour <

//ссылочная переменная на игрока
GameObject player;
//позиция игрока в предыдущем кадре
//и разница в позиции между кадрами
Vector3 lastPos, offset;
//скорость движения фона
public float speed;

//выполнится один раз при запуске скрипта
void Start () <
//делаем линк на игрока
player = GameObject .FindWithTag ( «Player» );
//запоминаем его позицию
lastPos = player.transform.position;
>

//выполняется каждый кадр
void Update () <
//посчитать разницу в позициях между кадрами
offset = player.transform.position — lastPos;
//пересчитать разницу в зависимости от скорости и передвинуть фон по полученному вектору
//Time.deltaTime корректировка для разного фпс
transform.Translate (offset * speed * Time .deltaTime);
//перезаписать позицию в текущем кадре
lastPos = player.transform.position;
>
>

Как добавить фоновую музыку:

Теперь простое. Импортируйте звуковой файл Music. Выберите Rat в иерархии. Перетащите Music на Rat ы иерархии (или добавьте Audio Source и поместите Music в поле AudioClip field). Включите Loop.

Проверьте сцену.

Ссылка на основную публикацию
Adblock
detector