Как сделать миникарту в unity

Добавил пользователь Alex
Обновлено: 28.09.2024

using UnityEngine;
using System.Collections;

public class movePlayer : MonoBehaviour

private GameObject player; //Переменна объекта персонажа с которым будем работать.

public static int speed = 6; //Скорость перемещения персонажа. Запись public static обозначает что мы сможем обращаться к этой переменной из любого скрипта
public static int _speed; //постоянная скорость перемещения персонажа
public int rotation = 250; //Скорость пповорота персонажа
public int jump = 3; //Высота прыжка


public static bool IsDrawWeapon; //Двоичная переменная, которая будет отвечать достануто ли у нас оружие.
public static float x = 0.0f; //угол поворота персонажа по оси x
void Start () <
IsDrawWeapon = false; //По умолчанию оружие у нас спрятано.
_speed = speed; //Задаем постоянное стандартное значение скорости персонажа
player = (GameObject)this.gameObject; //Задаем что наш персонаж это объект на котором расположен скрипт
>

void Update () <
if(IsDrawWeapon == true) //Если оружие вытащено
<
speed = _speed * 2; // Меняем скорость передвижени(я это сделал потому что, у этой моделки нету анимаций движения простым шагом с мечом. а понижать скорость анимации у бега получиться не красиво)
if(Input.GetKey(KeyCode.W)) //Если нажать W
<
player.transform.position += player.transform.forward * speed * Time.deltaTime; //Перемещаем персонажа в перед, с заданой скорость. Time.deltaTime ставится для плавного перемещения персонажа, если этого не будет он будет двигаться рывками
>
if(Input.GetKey(KeyCode.S))
<
speed = _speed / 2; //При передвижениии назад снижаем скорость перемещения
player.transform.position -= player.transform.forward * speed * Time.deltaTime; //Перемещаем назад
>
if(Input.GetKeyUp (KeyCode.S))
<
speed = _speed * 2; //Возвращаем cтандартное значение
>
if(Input.GetKey (KeyCode.A))
<
player.transform.position -= player.transform.right * speed * Time.deltaTime; //перемещаем в лево
>
if(Input.GetKey (KeyCode.D))
<
player.transform.position += player.transform.right * speed * Time.deltaTime; //перемещаем в право
>
if(Input.GetKey (KeyCode.Space))
<
player.transform.position += player.transform.up * jump * Time.deltaTime; //Прыгаем
>

if(Input.GetKey (KeyCode.Tab)) //При нажатии и на кнопку Tab
<
IsDrawWeapon = false; //Мы спрячем наше оружие.
>
>
else if(IsDrawWeapon == false) //Если оружие не спрятано. |||||| Сделано разделение на движения в зависимости от того вытащено ли у нас оружие или нет, потому что персонаж будет перемещаться сразной скорость у меня в этих случаях, как я уже написал из за отсутсвия некоторых анимаций у модельки.
<
speed = _speed;//Скорость в стандартное значение
if(Input.GetKey (KeyCode.LeftShift)) //Если зажать левый Shift
<
speed = _speed * 2; //Увеличиваем скорость перемещения(бег)
>
if(Input.GetKeyUp (KeyCode.LeftShift)) //Если отпустить
<
speed = _speed; //Возвращаем стандартное значение
>
if(Input.GetKey(KeyCode.W)) //Если нажать W
<
player.transform.position += player.transform.forward * speed * Time.deltaTime; //Перемещаем персонажа в перед.
>
if(Input.GetKey(KeyCode.S))
<
speed = _speed / 2;
player.transform.position -= player.transform.forward * speed * Time.deltaTime; //Перемещаем назад
>
if(Input.GetKeyUp (KeyCode.S))
<
speed = _speed; //Возвращаем cтандартное значение
>
if(Input.GetKey (KeyCode.A))
<
player.transform.position -= player.transform.right * speed * Time.deltaTime; //перемещаем в лево
>
if(Input.GetKey (KeyCode.D))
<
player.transform.position += player.transform.right * speed * Time.deltaTime; //перемещаем в право
>
if(Input.GetKey (KeyCode.Space))
<
player.transform.position += player.transform.up * jump * Time.deltaTime; //Прыгаем
>
if(Input.GetKey (KeyCode.Tab)) //при нажатии на кнопку таб
<
IsDrawWeapon = true; //Мы вытащим наше оружие
>
>

//Поворачиваем персонажа. Так как наша переменная x глобальна, из скрипта камеры в неё будем записывать длину на сколько сместился указатель мыши и по оси X и относительно этого будет повернут наш персонаж
Quaternion rotate = Quaternion.Euler (0,x,0); //Создаем новую переменную типа Quaternion для задавания угла поворота
player.transform.rotation = rotate; //Поворачиваем персонаж

codeusing UnityEngine;
using System.Collections;

public class CamMove : MonoBehaviour <
public Transform target; //Объект за которым летаем(Наш персонаж)
public float distance = 3.0f; //На каком ратоянии от него
public float xSpeed = 125.0f; //Чуствительность по Х
public float ySpeed = 50.0f; //Y Чуствительность
public float targetHeight = 2.0f; //Высота относительно объекта
//Минимальный и максимальный угол поворота Y инче камеру разверет, Дальше у нас будет простая функция для инвертации их в обратные числа
public float yMinLimit = -40;
public float yMaxLimit = 80;
//Максимальное удаление и приближение камеры к персонажу, искорость.
public float maxDistance = 10.0f;
public float minDistance = 0.5f;
public float zoomRote = 90.0f;

private float x = 0.0f; //Угол поворота по Y?
private float y = 0.0f; //Уго поворота по X?

[AddComponentMenu("Scripts/Mouse Orbit")] //Добавляем в меню

public void Start() <
//переворачивам углы
Vector3 angles = transform.eulerAngles;
x = angles.y;
y = angles.x;

if(rigidbody)
rigidbody.freezeRotation = true; //Если камера столкнется с физ.объектомона остановиться
>

public void LateUpdate() <
if (target) //Меняем углы согласно положению мыши
x += Input.GetAxis("Mouse X") * xSpeed * 0.02f;
y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f;
//Меняем дистанция до персонажа.
distance -= (Input.GetAxis ("Mouse ScrollWheel") * Time.deltaTime) * zoomRote * Mathf.Abs(distance);
distance = Mathf.Clamp (distance, minDistance, maxDistance);

y = ClampAngle(y,yMinLimit, yMaxLimit); //Вызыв самописной функции для ограничения углов поврот
movePlayer.x = x;
//Повернуть камеру согласно поченым данным
Quaternion rotation = Quaternion.Euler(y, x, 0);
transform.rotation = rotation;

//Двигаем камеру и следим за персонажем
Vector3 position = rotation * new Vector3(0.0f, targetHeight+0.5f, -distance) + target.position;
transform.position = position;

//Следуйщи код нужен что бы камера не проваливалась по ланшафт
RaycastHit hit;
Vector3 trueTargetPosition = target.transform.position - new Vector3(0, -targetHeight,0);
if(Physics.Linecast (trueTargetPosition, transform.position, out hit))
<
float tempDistance = Vector3.Distance (trueTargetPosition, hit.point) - 0.28f;
position = target.position - (rotation * Vector3.forward * tempDistance + new Vector3(0, -targetHeight, 0));
transform.position = position;
>
>

>
//Меняем значения углов
public static float ClampAngle (float angle, float min, float max) <
if(angle 360)
angle -= 360;
return Mathf.Clamp (angle, min, max);
>
>

using UnityEngine;
using System.Collections;

public class AnimatePlayer : MonoBehaviour

public void Start ()
<
// Устанавливаем все клипы анимации в режим цикла
animation.wrapMode = WrapMode.Loop;
// Кроме следующих
animation["Attack01"].wrapMode = WrapMode.Once;
animation["jump"].wrapMode = WrapMode.Once;
animation["Skill"].wrapMode = WrapMode.Once;
//У них одиночное выполнение

//Останавливаем выполнение анимаций.
animation.Stop();
>

public void Update () <
// На основе нажатой клавиши выполняем анимацию
if(movePlayer.IsDrawWeapon == false) //Если оружие не вытащено
<
if (Input.GetAxis("Vertical") > 0.0f) //Проверяем на изминениея позиции персонажа повертикали, если да
<
if(movePlayer.speed == movePlayer._speed * 2) //Проверяем скорость Передвижения персонажа,
<
animation.CrossFade ("Run00"); //Если зажата клавиша shift, значит грузим анимацию бега
>
else
<
animation.CrossFade("Walk"); //В противном случаее ходьбу
>
>
else if(Input.GetAxis("Vertical") 0.0f)
<
if(movePlayer.speed == movePlayer._speed * 2)
<
animation.CrossFade ("R_Run00"); //бег в право
>
else
<
animation.CrossFade ("R_Walk"); //Шагание в право
>

0

Ребят, а как сделать чтоб при движении назад он разворачивался на 180 градусов, заранее спасибо.

Игровой форум GFAQ.ru


Разработка компьютерных игр. С чего начать? Это просто! С нуля до разработчика игр: как начать создавать свою игру. Заказать создание игры.

Начнем с самого простого: загрузки и настройки Unity.

Загрузите последнюю версию с официального сайта или торрента и запустите установочный файл.

Выбор редактора в Unity

Полезно знать: невозможно использовать отладчик Visual Studio 2013 Express с Unity. Вы должны иметь Pro версию Visual Studio и купить UnityVS плагин. С версией Express, вы будете иметь лучший редактор кода, но отсутствие отладчика сведет на нет все его достоинства.

Mac OS X

MonoDevelop 4 - существенно лучше, чем старый MonoDevelop 2 в предыдущих версиях Unity. Он, конечно, далек от совершенства, но ничего лучшего под на Mac не придумано.

На каком языке программировать в Unity?

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

Вот несколько ссылок, которые могут быть вам полезными:

  • Изучение интерфейса Unitys : основа всех основ. Не зная интерфейса, вы не сможете создавать игры в Unity 3D
  • Создание сцены в Unity : изучение этого раздела поможет вам создать свою собственную сцену
Первая сцена. Создаем новый проект.

Выберите меню File , а затем создаqnt новый проект. Не выбирайте нивакой стандартный пакет на первое время. Вы можете повторно импортировать их позже, если вы захотите, просто поначалу они будут просто сбивать вас с толку.

Создание нового проекта в Unity

Выберите 2D настройки. Как и прежде, вы можете изменить этот флаг в настройках проекта позже.

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

Разметка и панели Unity

Перед вами пустая страница. С ней вы и будете работать, но вам потребуется время, чтобы настроить интерфейс в соответствии со своими конкретными нуждами. Лично мне удобнее, когда консоль находится рядом с игровым экраном, но если у вас маленький монитор, вы можете заменить панели вкладками.

Пустой проект

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

Чтобы держать все под рукой, советуем создать папки во вкладке Project (Проект). Эти папки будут созданы в папке Assets вашего проекта.

Папки в Unity

Внимание: папка Assets – это место, где хранится все, что вы добавляете во вкладке Project. Она может быть невидимой в Unity, в зависимости от выбранной разметки вкладки (одна или две колонки), но вы сможете увидеть ее, открыв приложение для экспорта файлов.

Вот пример структуры, которую мы используем в наших проектах. Вы можете адаптировать ее под свои предпочтения.

Ассеты проекта

В вашей панели Project, вы можете найти различные типы ассетов:

Префабы

Многоразовые игровые объекты (например: пули, враги, бонусы).

Префабы можно рассматривать как класс в языке программирования, который может быть обработан в игровых объектах. Это некая форма, которую можно дублировать и изменить по своему желанию в сцене или во время выполнения игры.

Сцены

Сцена содержит игровой уровень или меню.

В отличие от других объектов, создаваемых в панели "Проект", сцены создаются в меню "Файл". Если вы хотите создать сцену, нажмите на кнопку "Новая сцена" в подменю и не забудьте потом сохранить ее в папку Scenes.

Сцены должны быть сохранены вручную. Это классическая ошибка в Unity - сделать некоторые изменения в сцене и ее элементы и забыть сохранить их после. Ваш инструмент контроля версий не увидите никаких изменений до тех пор, сцена не сохранится.

Звуки

Тут все предельно просто. Увидите, если захотите раскидать музыку по разным папкам.

Scripts

Textures

Спрайты и изображения вашей игры. В 2D проекте вы можете переименовать эту папку в "Sprites".

Это неважно для 2D проекта, но, оставив название Textures (Текстуры), вы дадите возможность Unity автоматизировать некоторые задачи. Если вы хотите узнать подробную информацию по этой теме, вы можете прочитать об этом здесь , или здесь .

Заметка о папке Resources : если вы уже работали с Unity, вы знает, что Resources – полезная и уникальная папка. Она позволяет загрузить в скрипт объект или файл (с помощью статичного класса Resources ). Она понадобится нам в самом конце (в главе, посвященной меню). Проще говоря, пока мы не будем ее добавлять.

Наша первая игровая сцена

Панель Hierarchy (Иерархия) содержит все объекты, которые доступны в сцене. Это то, чем вы манипулируете, когда начинаете игру с помощью кнопки "Play".

Каждый объект сцены является игровым объектом для Unity. Вы можете создать объект в главной сцене, или в другом объекте игры. Также вы можете в любое время переместить объект чтобы изменить его родителя.

Логические объекты

Как вы можете видеть здесь, у нас здесь 3 потомка для объекта Level .

Пустые объекты

В Unity можно создать пустой объект и использовать его в качестве "папки" для других игровых объектов. Это упростит структуру вашей сцены.

Пустые объекты

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

Заполнение сцены

По умолчанию, новая сцена создается с объектом Main Camera (Главная камера). Перетащите ее на сцену.

Для начала создайте эти пустые объекты:

Scripts Мы добавим наши скрипты сюда. Мы используем этот объект, чтобы прикрепить сценарии, которые не связаны с объектом – например, скрипт гейм-менеджера. Render Здесь будет наша камера и источники света. Level

В Level создайте 3 пустых объекта:

  • 0 - Background
  • 1 - Middleground
  • 2 - Foreground

Сохраните сцену в папке Scenes . Назовите ее как угодно, например Stage1 . Вот, что у нас получилось:

Первая сцена на Unity

Совет: по умолчанию игровой объект привязан к положению родителя. Это приводит к интересному побочному эффекту при использовании объекта камеры: если камера является дочерним объектом, она автоматически будет отслеживать положение родителя. Если же она является корневым объектом сцены или находится внутри пустого игрового объекта, она всегда показывает один и тот же вид. Однако если вы поместите камеру в движущийся игровой объект, она будет следовать за его передвижениями в пределах сцены. В данном случае нам нужна фиксированная камера, поэтому мы помещаем ее в пустой объект Render . Но запомните это свойство объекта камеры, оно может вам пригодиться. Мы подробно остановимся на этой теме в главе "Паралаксный скроллинг".

Мы только что создали базовую структуру нашей игры. На следующем этапе мы начнем делать забавные вещи: добавим на сцену фон и кое-что еще!

Добавляем фон в сцену

Наш первый фон будет статическим. Воспользуемся следующим изображением:

TGPA фон

Импортируйте изображение в папку Textures (Текстуры). Просто скопируйте файл в нее, или перетащите его из проводника. Не беспокойтесь сейчас о настройках импорта.

Создайте в Unity новый игровой объект Sprite на сцене.

Новый спрайт для игры в Unity

Что такое спрайт?

По сути, спрайт – это 2D-изображение, используемое в видео-игре. В данном случае это объект Unity для создания 2D-игр.

Добавляем текстуру спрайта

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

Выбор спрайта в Unity

Вы должны нажать на маленький круглый значок справа от поля ввода, чтобы появилось Select Sprite (Выбрать спрайт) в Инспекторе

Вид спрайта

Итак, мы создали простой спрайт отображающий облака на небе. Давайте внесем изменения в сцену. В панели Hierarchy (Иерархия) выберите New Sprite . Переименуйте его в Background1 или что-то такое, что легко запомнить. Переименуйте его в Background1 или что-то такое, что легко запомнить. Затем переместите объект в нужное место: Level -> 0 - Background . Измените координаты на (0, 0, 0) .

Фон установлен

Создайте копию фона и поместите его в (20, 0, 0) . Это должно отлично подойти к первой части.

Фон 2

Слои со спрайтами

Следующее утверждение очевидно, но обладает некими неудобствами: мы отображения 2D мир. Это означает, что все изображения на одной и той же глубине, то есть 0 . И вы графический движок не знает, что отображать в первую очередь. Слои спрайтов позволяют нам обозначить, что находится спереди, а что сзади.

В Unity мы можем изменить "Z" наших элементов, что позволит нам работать со слоями. Это то, что мы делали в этом руководстве перед обновлением до Unity 5, но нам понравилась идея идея использовать слои со спрайтами. У вашего компонента Sprite Renderer есть поле с именем Sorting Layer с дефолтным значением. Если щелкнуть на нем, то вы увидите:

Сортировка списка слоев

Давайте добавим несколько слоев под наши нужды (используйте кнопку + ):

Добавить сортировку слоя в Unity

Добавьте фоновый слой к вашему спрайту фона:

Установить сортировку слоя

Настройка Order in Layer - это способ ограничить подслои. Спрайты с меньшим номером оказываются перед спрайтами с большими числами.

Слой Default нельзя удалить, так как это слой, используемый 3D-элементами. Вы можете иметь 3D-объекты в 2D игре, в частности, частицы рассматриваются как 3D-объекты Unity, так что они будут рендериться на этом слое.

Добавление элементов фона

Также известных как props. Эти элементы никак не влияют на геймплей, но позволяют усовершенствовать графику игры. Вот некоторые простые спрайты для летающих платформ:

Спрайты для платформ

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

Получение двух спрайтов из одного изображения

Выполняйте следующие действия:

  1. Импортируйте изображения в папку "Текстуры"
  2. Выберите спрайт Platform и перейдите к панели Инспектор
  3. Измените "Sprite Mode" на "Multiple"
  4. Нажмите на кнопку Sprite Editor (Редактор спрайта)

В новом окне ( Sprite Editor ) вы можете рисовать прямоугольники вокруг каждой платформы, чтобы разрезать текстуру на более мелкие части:

Редактор спрайтов

Кнопка Slice в левом верхнем углу позволит вам быстро и автоматически проделать эту утомительную работу:

Автоматическая нарезка

Unity найдет объекты внутри изображения и будет нарежет их автоматически. Вы можете установить дефолтное значение для точки вращения или минимальный размер каждого фрагмента. Для простого изображения без артефактов, это необычайно эффективно. Тем не менее, если вы используете этот инструмент, будьте осторожны и проверьте результат, чтобы убедиться, что вы получили то, что хотели.

В этом уроке проделаем эту операцию вручную. Назовите платформы platform1 и platform2 . Теперь, под файлом изображения, вы должны увидеть два спрайта отдельно:

Результат редактора спрайтов

Добавим их в сцену. Для этого мы будем выполнять те же действия что и для фона: создадим новый спрайт и выберим platform1 . Потом повторим эти действия для platform2 . Поместите их в объект 1 - Middleground . Убедитесь, что их позиция по оси Z равна нулю.

Две новые платформы

Prefabs (Префабы)

Сохранить эти платформы как префабы. Просто перетащите их в папку Prefabs :

Префабы

Таким образом вы создадите Prefab , точно отвечающий оригинальному игровому объекту. Вы увидите, что игровой объект, который вы конвертировали в Prefab , представляет собой новый ряд кнопок прямо под его именем:

соединение префабов

Заметка о кнопках "Prefab": При последующей модификации игрового объекта, вы можете использовать кнопку "Apply", чтобы применить эти изменения к Prefab , или кнопку "Revert", чтобы отменить все изменения игрового объекта в свойстваъ Prefab . Кнопка "Select" переместит выбранные свойства в ассет Prefab в окне проекта (они будут выделены).

Создание префабов с объектами-платформами упростит их повторное использование. Просто перетащите Prefab на сцену, чтобы добавить копию. Попробуйте добавить другую платформу таким же образом.

Теперь вы можете добавить больше платформ, меняющих свои координаты, размеры и плоскости (вы можете поместить их на заднем или переднем плане, просто установите координату Z для платформы на 0 ).

На данном этапе все это выглядит еще сыроватым, но в следующих двух главах мы добавим параллаксный скроллинг, и сцена оживет у нас на глазах.

Прежде чем двигаться дальше, мы модифицируем наши слои, чтобы избежать каких-либо проблем с порядком их отображения. Для этого просто измените позицию игровых объектов по оси Z во вкладке Hierarchy (Иерархия) следующим образом:

Слой Позиционирование по оси Z
0 - Задний фон 10
1 - Средний фон 5
2 - передний фон 0

При переключении из 2D режима в 3D, в окне "Scene" (Сцена) вы будете четко видеть слои:

Кликнув на игровом объекте Main Camera , вы увидите, что флажок Projection установлен на Orthographic . Эта настройка позволяет камере визуализировать 2D игру без учета трехмерных свойств объектов. Имейте в виду, что даже если вы работаете с 2D объектами, Unity по-прежнему использует свой 3D движок для визуализации сцены. Рисунок выше это наглядно демонстрирует.

В следующем уроке:

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



Для игр, где требуется создавать множество врагов или просто случайно генерировать объекты на сцене очень важна реализация спавна объектов - их создания из скрипта. Давайте рассмотрим, как это сделать.

Первым делом обозначим переменные, которые будем использовать. Это переменная игрового объекта, который надо создать и переменная позиции в 3D или 2D пространстве. В моем примере игра трехмерная.

Vector3 spawn_pos = Vector3.zero;

Теперь создадим объект на сцене с помощью встроенной в Unity функции Instantiate():

Instantiate(prefab, spawn_pos, Quaternion.identity);

Первый арггумент - объект, второй - позиция в виде Vector3, третий - вращение, которое оставлено неизменным.

Создание террейна в Unity3d для абсолютных новичков — Unity — DevTribe: инди-игры, разработка, сообщество

В данном уроке рассказывается о том, как создать ландшафт в Unity3D.

Unity - мощный инструмент для создания игр и визуализаций.

Отличительной чертой Unity является его гибкость, адаптивность к разработке как небольших 2D-паззлов или аркад, так и к разработке больших-серьезный стратегий, RPG или игр других жанров. В то же время, одной из парадигм Unity является простота освоения и удобство работы.

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

Часть первая. С чего начать?

Начать следует, конечно, с установки и запуска редактора.
Процесс установки пропустим, так как он не вызовет затруднений ни у кого.
Итак, редактор запущен. Создаем или загружаем проект, в котором предстоит делать ландшафт. Если вы уверены, что не используете никаких ассетов с графикой, то следует выбрать ассет *Environment* из стандартной комплектации.
Следующее действие - добавить в проект этот самый "террейн", который будем создавать.
Для этого в верхнем (главном) меню выбираем GameObjects - > 3D Objects - > Terrain.

Создание террейна в Unity3d для абсолютных новичков — Unity — DevTribe: инди-игры, разработка, сообщество

Появляется непонятный грязновато-белый квадрат с сеткой.
Выбираем новосозданный террейн на панели иерархии сцены (слева). Там же его можно переименовать, копировать, или удалить, но это не то, что нам нужно для создания. Итак, после этого в инспекторе (панель справа от сцены или вкладка. Кстати, её можно перетаскивать, чтобы расположить так, как вам удобно) появится символическое изображение стилизованного кубика как земля в майнкрафте с подписью террейн и несколькими инструментами.

Эта панелька будет с нами до конца статьи — Создание террейна в Unity3d для абсолютных новичков — Unity — DevTribe: инди-игры, разработка, сообщество

Эта панелька будет с нами до конца статьи

Часть вторая. И что это за кнопки?

Первый инструмент, на иконке которого изображены горы со стрелочкой вверх (и который выделен на рисунке бирюзовым)- это создание неровностей. Им можно создавать возвышения (кликнув на террейне в нужном месте) или впадины (то же самое, но с зажатым шифтом).
Обратите внимание , что для получения эффекта нужно настроить кисть - её форму, размер и "силу" (Opacity - непрозрачность).
Обратите внимание также, что для создания полноценных впадин террейн нужно сначала поднять. В противном случае ландшафт лишь выровняется до минимального уровня.
В этом уроке не будет рекомендаций по созданию _красивого_ ландшафта. Не будет даже советов по использованию созданного ландшафта. Цель урока - помочь освоиться с базовыми функциями редактора и, может быть, помочь преодолеть так называемый "ступор незнакомого интерфейса", возникающий у многих людей при запуске незнакомой программы или знакомой с изменившимся интерфейсом.

Наверняка после недолгих экспериментов вы получили некие резкие перепады высот, которые смотрятся "не очень". Для их устранения нам поможет Smooth terrain, расположенный справа через одну. Выглядит он как всё та же горка с каплей воды рядом (На рисунке выделен желтым). Это отнюдь не создание воды, как может показаться. Это _сглаживание_.
Левее, кстати, расположен инструмент для создания плато ( выделен зеленым ) - он выравнивает высоту. Для захвата необходимой высоты зажимаем Shift, после чего "рисуем" плато без зажатого шифта.
Следующие инструменты позволяют наложить на ландшафт текстуры, расположить деревья и декорации. Последняя кнопка на этой панели - настройки.

Для добавления текстуры (иконка - кисть, выделена красным ), нужно сначала добавить тайлы. Ниже настроек кистей будет панель текстур. Нажимаем Edit textures - > Add texture и подбираем нужную (и как Normal, и как Smoothness) из списка предложенных (к слову, их можно добавлять самостоятельно, но об этом в другой раз). Для наглядности можно создать первой текстурой _GrassRockyAlbedo_, а второй - GrassHillAlbedo, после чего поэкспериментировать с настройками кисти и текстуры, порисовав травой.
+Преимуществом+ Unity является обилие кистей и довольно высокая гибкость их настроек, что после небольшой практике позволяет с легкостью создавать интересные ландшафты с минимумом усилий.

Инструмент размещения деревьев (выделен фиолетовым), располагающийся левее текстурирования, работает схожим образом. Добавляем деревья и. немного больше настроек. Указывается плотность расположения деревьев, их высота, которая может быть автоматически рандомизирована для каждого, привязка ширины к высоте (или её рандомизация) и автоматическая рандомизация поворота деревьев. К слову, в изначальной поставке деревьев не то, чтобы много.
Зажатие шифта, как водится. позволяет стирать деревья с террейна.

Также, на панельке можно найти кнопку "Mass Place Trees", которая позволяет заполнить весь террейн указанным количеством деревьев.
Последний инструмент ( выделен синей рамкой) - расположение деталей, то есть всяческих украшений, вроде травы. Опять же, в изначальной поставке их не то, чтобы много.
К примеру, выбираем Edit Details -> Add Grass Texture и выбираем текстуру _GrassFrond01AlbedoAlpha_ после чего испытываем её кистью.

Заключение

Создание ландшафта в Unity3D - это не трудно. Конечно, использование Unity не гарантирует запредельный уровень графики без приложения каких-либо усилий, да и модели и текстуры, вероятно, придется делать самостоятельно или с привлечением художников и 3D-артистов, искать в сети, либо покупать. Охватить все тонкости в рамках одной статьи решительно невозможно. Более того, статья рассматривает лишь одну грань работы с Unity.

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

Читайте также: