Как сделать онлайн игру на unity3d - IT Новости
Microclimate.su

IT Новости
23 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как сделать онлайн игру на unity3d

Как создать игру на Unity 3D

На игровой платформе Unity уже давно создаются сотни игр с распространёнными жанрами как: гонки, экшен, логические, RPG и другие. Также на данном движке разрабатываются программы для разных ОС:

  • Windows и Windows Phone;
  • Linux;
  • Mac OS;
  • IOS и Android;
  • Браузерные игры, которые работают при поддержке плагина Unity Web Player и т.д.

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

Для закрепления навыков нужна практика. Поэтому, давайте рассмотрим пример двухмерной игры «Гонки», где выбранное пользователем авто будет совершать движение по дороге.

Подготовка рабочего места и поиск предметов игры

Персонажем, о котором будет идти речь, является «Машинка», выбрать можно любую, от грузовика до легковушки, а так же конечно, трек, по которому она будет двигаться — «Дорога». По треку машинка ехать не будет, в свою очередь движение зададим дороге, таким образом, создадим иллюзию движения. Главное, что бы проекция на предметы была сверху, а не сбоку.

Далее делаем вход и настройку системы:

  • Запускаем приложение Unity 3D;
  • В появившемся окне кликаем «New Project», прописываем имя проекта, проставляем локацию для сохранения, ставим отметку напротив модуля 2Д и нажимаем кнопку «Create Project»;
  • При открытии программы, можно упорядочить удобное расположение рабочих окон, передвинуть их, нажав ПКМ и перетащив;
  • Выбираем File – Build Setting, если выбираемый проект компилируется под файловые системы типа Windows, MAC и т.п., то выбираем Android и нажимаем «Switch Platform»;
  • Перемещаем выбранные ранее заготовки в Юнити, в папку Assets.

Подготовление основы

Сцена готова, начинаем задавать значения нашим объектам в Инспекторе:

  • Кликаем на картинку дороги и меняем значение на Texture в меню Инспектор – Texture Tabe;
  • Что бы текстура повторялась, для нашей игры выбираем Wrap Mode – Repeat, остальные свойства оставляем и нажимаем Apply;
  • Трек состоит на основе 3Д объекта Quad, его можно выбрать в меню Create – 3D Object, после растягиваем его по размерам выбранной игровой области и перетягиваем картинку дороги на Quad;

Так как предметы сцены притемнены, добавляем объект Direction Light. Это так называемый источник света. Он создаёт вид солнца, предоставляя возможность осветить вид на сцене и добавить теней, для лучшего контраста.

После нужно задать нашей дороге функцию движения, для того прописываем новый скрипт:

  • Создание папки Scripts, сюда добавим С# Script, под названием «Move Track» и начинаем редактировать;
  • Двойным нажатие на скрипт открываем текстовый редактор и прописываем код со значениями, при которых будет смещаться созданная текстура:
  • пропишем переменную public float speed = 1f, таким образом, трек будет двигаться со скоростью 1, в дальнейшем это значение можно подкорректировать;
  • далее в Update прописываем новый вектор, в котором параметры движение будет производиться по Y: Vector2 offset = new Vector2 (0, Time.time * speed);
  • далее прописываем GetComponent ().material.mainTextureOffset = offset, здесь задано всей текстуре значение cдвига;
  • После создания скрипта проверяем движение дороги на сцене, нажав кнопку Play.

Робота над «игроком»

Перетаскиваем машинку на сцену и выставляем её размеры, и расположение для удобного пользования, при этом задаём в строке название Player.

  • Добавляем к текстуре компонент Box Collider 2D, что бы объект стал «твёрдым». Не забываем выставить границы нажатием на Edit Collider;
  • Также добавим Rigidbody 2D со значением Gravity Scale 0, в работе такого рода игры нет потребности использовать силу гравитации;
  • Создаём скрипт для привода движения предмета, например, назвав Player Controller;
  • Открываем редактор и задаём значения:
    • переменная public float carSpeed = 5f, а также Rigidbody2D rb;
      void Start ()
    • теперь нужно задать объекту перемещение влево и вправо, для этого в Update пишем: float direction = Input.GetAxis («Horizontal»);
      Vector2 carMove = New Vector2 (carSpeed * direction, 0);
      rb.velocity = carMove;
    • задаём значения границ, за которые объект не должен выходить:
      Vector3 pos = transform.position;
      pos.x = Mathf.Clamp (pos.x, -2.2f, 2.2f);
      transform.position = pos;
    • Возвращаемся в Юнити и кнопкой Play проверяем результат.

Добавление оппонентов

В сети нужно подыскать схожую по параметрам ещё одну машинку и перенести её в среду Unity. Добавляем компоненты:

  • Расположив препятствие на игровой сцене, добавляем Box Collider 2D и редактируем по примеру игрока и разворачиваем на 180;
  • Добавляем скрипт enemyMove с программированием кода для перемещения:
    • public float Speed;
    • speed = Random.Range (5f, 8f);
    • transform.Translate (new Vector3 (0, 1, 0) * speed * Time.deltaTime);
  • Дальше создаём пустой New Object и выносим его за приделы игровой зоны, при этом поворачиваем на 180. Для удобства присвоим имя «Barrier» и пометим любой иконкой;
  • Программируем скрипт этому объекту:
    • public GameObject[ ] barrier;
    • public float delayTimer = 2f;
    • float timer;
    • При старте указываем: timer = delayTimer;
    • При каждом апдейте:
    • Timer -= Time.deltaTime;
    • If (timer Category : Помощь
      • ← Создание 2D платформера в Unity 3D

      Создание игры на Unity: Курс для начинающих разработчиков на Unity

      Unity уроки для новичков. Создание игры на Unity с нуля

      Предложение ограничено по времени

      Что вы изучите?

      • Скачивание и установка Unity Как использовать интерфейс проекта Unity Работа с контрольной панелью объекта Работа и использование освещения Раскраска объектов

      Содержание

      Раздел 1: Создание игры на Unity: Видеокурс

      Описание

      Итак, вы решили узнать, как создать игру на Unity, но вы никогда не использовали этот игровой движок раньше? Не стоит расстраиваться! Никогда не поздно начать учиться. Этот курс расскажет вам всё про создание игры на Unity и поможет вам освоиться в движке Unity менее чем за 2 часа.

      Начните ваше путешествие к успеху

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

      Наши Unity уроки расскажут вам про различные техники создания уровней с использованием 3D объектов, вроде сфер, кубов или цилиндров. Здесь присутствуют отдельные лекции по эффектам освещения и работе с камерой, чтобы придать вашей игре более привлекательный вид. Вы также научитесь проводить манипуляции с игровой физикой и материалами для придания им более реалистичного поведения. Данный курс по созданию игр на Unity даже охватит некоторые основы программирования на C#. Другими словами, вы освоите все важные базовые аспекты Unity, которые позволят вам более эффективно начать изучение сложных и продвинутых инструментов.

      Учитесь у опытного и действующего разработчика игр

      Вы будете учиться у настоящего профессионала Йохана Тайеба. Он создал более 100 успешных мобильных приложений и игр. Йохан также обучал разработке игр и программированию в колледже в течение многих лет. Так как он считает, что онлайн обучение — это новая ступень в образовании, Йохан создал онлайн Unity уроки для энтузиастов и начинающих разработчиков. Вы можете найти их все здесь, на сайте BitDegree.

      Йохан предпочитает делать более практические курсы. Именно поэтому, все его уроки, включая этот “Создание игры на Unity” имеют под собой основу из реального проекта. В течение этого курса вам не придётся просто сидеть и слушать. Вы будете пробовать использовать каждую из функций сами. Таким образом, обучение будет проходить более эффективно, так как вы будете сразу видеть результат своей работы. Следуя инструкциям из курса, вы совсем скоро поймёте как создать игру на Unity самому.

      Мощный + Бесплатный + Простой = Unity

      Если вы хотите начать знакомство с разработкой игр, то отличным вариантом станет именно движок Unity. Unity является самым популярным игровым движком в мире. Его обожают как крупные издатели игр AAA класса, так и инди разработчики. Так как он прост и бесплатен, то создание игры на Unity не потребует от вас каких-либо особых навыков и вложений. Однако игры, которые могут быть сделаны на нём, могут быть первоклассными. Deus Ex: the Fall, Assassin’s Creed: Identity, Cuphead, Hearthstone и множество других игр были сделаны именно на Unity.

      Одной из самых полезных возможностей Unity является то, что он позволяет создавать игры для различных платформ. С помощью Unity вы можете создать игру как для ПК, так и для мобильных гаджетов (Android и iOS). Вы даже можете узнать, как создать игру на Unity для популярных игровых приставок, VR и AR. Люди даже используют Unity для создания анимированных фильмов. Так как движок Unity позволяет вам создавать игры для различных платформ, это позволит вам охватить как можно большую аудиторию.

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

      Unity3D. Создание RPG. Урок 1. Создание меню


      1. Создаем меню с летающей камерой аля Far Cry.
      2. Персонаж. Движение и управление. Камера. Меняем позицию и вид камеры.
      3. Статы. Часть первая. Опыт, деньги.
      4. Квесты.
      5. Ai. Искусственный интеллект. Часть первая. Покупка персонажа.
      6. Статы. Часть вторая. Жизни, манна. Рисуем HP и MP бары.
      7. Ai. Искусственный интеллект. Часть вторая. Мобы.
      8. Инвентарь. Магазин.
      План может дополняться и изменятся.
      Урок 1. Меню с летающей камерой аля Far Cry.
      В этом уроке мы узнаем основы создания сцен в Unity3D. Узнаем некоторые стандартные возможности и некоторые дополнительные.
      Использовано:
      1. Terrain Toolkit http://yadi.sk/d/NECQRcVaCEKuT
      2. Nature Pack http://yadi.sk/d/m8Qu8ts2CEKyB
      3. Real Nature Pack 2 Autumn v2 http://yadi.sk/d/A4IN7tuMCELA3
      4. Tropical Nature Pack http://yadi.sk/d/lTMMWzC4CELCf

      План:
      1. Создание проекта. Импорт необходимых библиотек.
      2. Генерация ландшафта. Редактирование.
      3. Освещение. Камера.
      4. Анимация камеры(полет).
      5. Создание меню.
      Создание проекта. Импорт необходимых библиотек.
      Запускаем Unity. В «Project wizard» переходим во вкладку «Create New Project». В «Import the following packages» выбираем следующие паки: Skyboxes, Terrain Assets, Water(в зависимости от версии unity3d, я выбрал pro)

      Заходи в «Assets>>Import package>>Custom package» и переходим в папку где у вас лежат скачанные паки. Выбираем и нажимаем открыть.

      Внимание. Паки тяжелые по этому Unity может не слабо задуматься не пугайтесь!!
      Генерация ландшафта.
      Нажимаем «Terrain>>Create Terrain»

      Появился объект «Terrain»
      Нажимаем «Terrain>>Set Resolution» И устанавливаем размеры нашего ландшафта как на скриншоте. Для сцены меню на большой ландшафт не нужен и дабы не грузить процессор достаточно этих размеров.

      Тыкаем «Set Resolution»
      Нажимаем «Component>>Terrain>>Terain Toolkit»

      В появившемся компоненте «Terrain Toolkit» я выставил все так

      Советую поиграть с настройками очень часто вылазят такие интересные варианты ландшафта.
      Итак наш ландшафт готов.
      Зададим ему текстуру.
      В инспекторе нажимаем на кисточку а затем Edit Textures.

      И нажимаем Add Texture. В появившемся окне нажимаем «Select» на Texture

      В появившемся окне выбираем текстуру (двойной клик мышью), я выбрал «Grass(Hill)»

      Нажимаем Add и наш ландшафт перекрашивается.

      Нажимаем «Raise/Lower terrain»

      Выбираем кисть, размер(Brush Size) интенсивность(Opacity). И нажимая LBM(Левая кнопка мыши) поднимаем вершину, либо нажимая Shift+LBM опускаем.
      Нажимая «Smooth Height» (3 кнопка) убираем острые углы.
      Дальше я нарисовал что типа песчаного пляжа добавив текстуру «Good Dirt».
      Вот что у меня получилось.
      Выбираем «Place trees» и нажимаем «Edit trees». В появившемся окне нажимаем кружочек.
      И аналогично выбору текстуры выбираем дерево.
      И варируя настройками кисти насаживаем разных деревьев.
      Аналогично на предпоследней кнопке насаживаем цветов, травы, камней итд.
      С одним НО для того что бы не грузить процессор мы для травы мы выбираем «Add Grass Texture» а вот для остального «Add Details Mesh».
      И в последней вкладке можно побаловаться с настройками деревьев, рендера, настройками ветра. Я оставил все стандартно.
      Создадим воду. В окне «Project» идем в паку «OnQ Nature Pack 2 v2>>Resources Demo>>Standard Assets>>Water(pro only)» и выбираем «Daylight water».

      Перетягиваем на сцену и при помощи кнопок трансформации ставим и растягиваем как нам надо.

      Вот что у меня получилось.

      На этом с ландшафтом покончено.
      Добавим теперь «Skybox». Для Этого идем в «Edit>>Render Settings».

      И в инспекторе выбираем материал «Skybox» тыкнув на кружок.

      Я выбрал «Sunny2 skybox».
      Освещение и камера.
      В «GameObject>>Create Other» выберем «Point light».

      В инспекторе выставляем навстройки. «Position» x=100 y=100 z=100 это выставит наш источник света по центру над «Terrain» на высоте равной 100. «Range» = 150, это радиус освещения вокруг источника. И «Itensity» = 3.3.

      В итоге получился довольно мягкий свет достающий везде.

      У нас уже есть стандартно созданная камера «Main Camera». Кликнем на ней в окне Hierarchy. И расположим ей в позиции X=10, Z=10. A Y устанавливаем относительно высоты вашего ландшафта, у меня получилось 45. Что бы уменьшить площадь захватываемой камерой Изменяем настройку «Field of View»(У меня 43). Ориентируясь на окно «Camera Preview» поворачиваем камеру так как нам надо. У меня получилось Rotation X=5, Y=45, Z=0.
      Анимация камеры (полет)
      Заходим в «Window>>Animation» или нажимаем Ctrl+6. Нажимаем на стрелочки в пустом поле и выбираем «Create New Clip»
      Назовем его на пример «CameraFly». Нажмем на палочку на против «Position.x» и нажмем «Add Curves». Установим позицию кадра на 300 и выставляем необходимые координаты следующего положения камеры.
      У меня получились следующие значения:

      200?’200px’:»+(this.scrollHeight+5)+’px’);»>
      if(window == 1) //Если окно 1
      <
      GUI.Box (new Rect (Screen.width/2-100,Screen.height/2-80,200,220), «Меню»); //Создаем окно с меню

      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-40,180,30), «Новая игра»))
      <
      Application.LoadLevel(1); //Загружаем уровень 1
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-0,180,30), «Настройки»))
      <
      window = 2; //открываем окно настроек
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+40,180,30), «Об игре»))
      <
      window = 3; //Выводим информацию об Автарах игры
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+80,180,30), «Выход»))
      <
      window = 4; //Вызываем окно выхода
      >
      >

      //Далее все аналогично
      if(window == 2)
      <
      GUI.Box (new Rect (Screen.width/2-100,Screen.height/2-80,200,250), «Настройки»);
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-40,180,30), «Игра»))
      <
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-0,180,30), «Аудио»))
      <
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+40,180,30), «Видео»))
      <
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+80,180,30), «Управление»))
      <
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+120,180,30), «Назад»))
      <
      window = 1;
      >
      >

      if(window == 3)
      <
      GUI.Box (new Rect (Screen.width/2-100,Screen.height/2-80,200,220), «Об игре»);
      GUI.Label(new Rect(Screen.width/2-90,Screen.height/2-0, 180, 40), «Инфа о разрабе»);
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+100,180,30), «назад»))
      <
      window = 1;
      >
      >

      if(window == 4)
      <
      GUI.Box (new Rect (Screen.width/2-100,Screen.height/2-60,200,120), «Выход?»);
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-20,180,30), «Да»))
      <
      Application.Quit(); //Выход из игры
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+20,180,30), «Нет»))
      <
      window = 1;
      >
      >

      if(window == 0) //Если это окно то выключаем меню
      <
      useGUILayout=false;
      >
      >

      Скрипт перемещаем на Main Camera.

      Сохраним сцену под названием menu.unity

      Полный код скрипта menu

      200?’200px’:»+(this.scrollHeight+5)+’px’);»> using UnityEngine;
      using System.Collections;

      public class Menu : MonoBehaviour <
      public bool showMenu; //Отображать ли меню
      public int window; //Отображаемое окно
      public float lifeTime = 5.0f; //Максимальное время отображения меню
      private float curTime; //Текущие время отображения меню

      void Start () <
      showMenu = true;
      window = 1;
      >

      void Update () <
      if(showMenu == true) //Проверяем включно ли меню
      <
      curTime += Time.deltaTime; //Если включено, Увеличиваем переменную curTime согласно пройденому времени
      >
      if(curTime > lifeTime) //Если время дошло до максимальной точки
      <
      showMenu = false; //Отключаем меню
      window = 0;
      curTime = 0; //Сбрасываем таймер
      >
      if(showMenu == false&Input.anyKeyDown) //Если меню выключено и нажата любая клавиша
      <
      showMenu = true; //Включаем меню
      window = 1;
      >
      >

      void OnGUI () <
      if(window == 1) //Если окно 1
      <
      GUI.Box (new Rect (Screen.width/2-100,Screen.height/2-80,200,220), «Меню»); //Создаем окно с меню

      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-40,180,30), «Новая игра»))
      <
      Application.LoadLevel(1); //Загружаем уровень 1
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-0,180,30), «Настройки»))
      <
      window = 2; //открываем окно настроек
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+40,180,30), «Об игре»))
      <
      window = 3; //Выводим информацию об Автарах игры
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+80,180,30), «Выход»))
      <
      window = 4; //Вызываем окно выхода
      >
      >

      //Далее все аналогично
      if(window == 2)
      <
      GUI.Box (new Rect (Screen.width/2-100,Screen.height/2-80,200,250), «Настройки»);
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-40,180,30), «Игра»))
      <
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-0,180,30), «Аудио»))
      <
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+40,180,30), «Видео»))
      <
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+80,180,30), «Управление»))
      <
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+120,180,30), «Назад»))
      <
      window = 1;
      >
      >

      if(window == 3)
      <
      GUI.Box (new Rect (Screen.width/2-100,Screen.height/2-80,200,220), «Об игре»);
      GUI.Label(new Rect(Screen.width/2-90,Screen.height/2-0, 180, 40), «Инфа о разрабе»);
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+100,180,30), «назад»))
      <
      window = 1;
      >
      >

      if(window == 4)
      <
      GUI.Box (new Rect (Screen.width/2-100,Screen.height/2-60,200,120), «Выход?»);
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-20,180,30), «Да»))
      <
      Application.Quit(); //Выход из игры
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+20,180,30), «Нет»))
      <
      window = 1;
      >
      >

      if(window == 0) //Если это окно то выключаем меню
      <
      useGUILayout=false;
      >
      >
      >

      Unity3D. Создание RPG. Урок 1. Создание меню


      1. Создаем меню с летающей камерой аля Far Cry.
      2. Персонаж. Движение и управление. Камера. Меняем позицию и вид камеры.
      3. Статы. Часть первая. Опыт, деньги.
      4. Квесты.
      5. Ai. Искусственный интеллект. Часть первая. Покупка персонажа.
      6. Статы. Часть вторая. Жизни, манна. Рисуем HP и MP бары.
      7. Ai. Искусственный интеллект. Часть вторая. Мобы.
      8. Инвентарь. Магазин.
      План может дополняться и изменятся.
      Урок 1. Меню с летающей камерой аля Far Cry.
      В этом уроке мы узнаем основы создания сцен в Unity3D. Узнаем некоторые стандартные возможности и некоторые дополнительные.
      Использовано:
      1. Terrain Toolkit http://yadi.sk/d/NECQRcVaCEKuT
      2. Nature Pack http://yadi.sk/d/m8Qu8ts2CEKyB
      3. Real Nature Pack 2 Autumn v2 http://yadi.sk/d/A4IN7tuMCELA3
      4. Tropical Nature Pack http://yadi.sk/d/lTMMWzC4CELCf

      План:
      1. Создание проекта. Импорт необходимых библиотек.
      2. Генерация ландшафта. Редактирование.
      3. Освещение. Камера.
      4. Анимация камеры(полет).
      5. Создание меню.
      Создание проекта. Импорт необходимых библиотек.
      Запускаем Unity. В «Project wizard» переходим во вкладку «Create New Project». В «Import the following packages» выбираем следующие паки: Skyboxes, Terrain Assets, Water(в зависимости от версии unity3d, я выбрал pro)

      Заходи в «Assets>>Import package>>Custom package» и переходим в папку где у вас лежат скачанные паки. Выбираем и нажимаем открыть.

      Внимание. Паки тяжелые по этому Unity может не слабо задуматься не пугайтесь!!
      Генерация ландшафта.
      Нажимаем «Terrain>>Create Terrain»

      Появился объект «Terrain»
      Нажимаем «Terrain>>Set Resolution» И устанавливаем размеры нашего ландшафта как на скриншоте. Для сцены меню на большой ландшафт не нужен и дабы не грузить процессор достаточно этих размеров.

      Тыкаем «Set Resolution»
      Нажимаем «Component>>Terrain>>Terain Toolkit»

      В появившемся компоненте «Terrain Toolkit» я выставил все так

      Советую поиграть с настройками очень часто вылазят такие интересные варианты ландшафта.
      Итак наш ландшафт готов.
      Зададим ему текстуру.
      В инспекторе нажимаем на кисточку а затем Edit Textures.

      И нажимаем Add Texture. В появившемся окне нажимаем «Select» на Texture

      В появившемся окне выбираем текстуру (двойной клик мышью), я выбрал «Grass(Hill)»

      Нажимаем Add и наш ландшафт перекрашивается.

      Нажимаем «Raise/Lower terrain»

      Выбираем кисть, размер(Brush Size) интенсивность(Opacity). И нажимая LBM(Левая кнопка мыши) поднимаем вершину, либо нажимая Shift+LBM опускаем.
      Нажимая «Smooth Height» (3 кнопка) убираем острые углы.
      Дальше я нарисовал что типа песчаного пляжа добавив текстуру «Good Dirt».
      Вот что у меня получилось.
      Выбираем «Place trees» и нажимаем «Edit trees». В появившемся окне нажимаем кружочек.
      И аналогично выбору текстуры выбираем дерево.
      И варируя настройками кисти насаживаем разных деревьев.
      Аналогично на предпоследней кнопке насаживаем цветов, травы, камней итд.
      С одним НО для того что бы не грузить процессор мы для травы мы выбираем «Add Grass Texture» а вот для остального «Add Details Mesh».
      И в последней вкладке можно побаловаться с настройками деревьев, рендера, настройками ветра. Я оставил все стандартно.
      Создадим воду. В окне «Project» идем в паку «OnQ Nature Pack 2 v2>>Resources Demo>>Standard Assets>>Water(pro only)» и выбираем «Daylight water».

      Перетягиваем на сцену и при помощи кнопок трансформации ставим и растягиваем как нам надо.

      Вот что у меня получилось.

      На этом с ландшафтом покончено.
      Добавим теперь «Skybox». Для Этого идем в «Edit>>Render Settings».

      И в инспекторе выбираем материал «Skybox» тыкнув на кружок.

      Я выбрал «Sunny2 skybox».
      Освещение и камера.
      В «GameObject>>Create Other» выберем «Point light».

      В инспекторе выставляем навстройки. «Position» x=100 y=100 z=100 это выставит наш источник света по центру над «Terrain» на высоте равной 100. «Range» = 150, это радиус освещения вокруг источника. И «Itensity» = 3.3.

      В итоге получился довольно мягкий свет достающий везде.

      У нас уже есть стандартно созданная камера «Main Camera». Кликнем на ней в окне Hierarchy. И расположим ей в позиции X=10, Z=10. A Y устанавливаем относительно высоты вашего ландшафта, у меня получилось 45. Что бы уменьшить площадь захватываемой камерой Изменяем настройку «Field of View»(У меня 43). Ориентируясь на окно «Camera Preview» поворачиваем камеру так как нам надо. У меня получилось Rotation X=5, Y=45, Z=0.
      Анимация камеры (полет)
      Заходим в «Window>>Animation» или нажимаем Ctrl+6. Нажимаем на стрелочки в пустом поле и выбираем «Create New Clip»
      Назовем его на пример «CameraFly». Нажмем на палочку на против «Position.x» и нажмем «Add Curves». Установим позицию кадра на 300 и выставляем необходимые координаты следующего положения камеры.
      У меня получились следующие значения:

      200?’200px’:»+(this.scrollHeight+5)+’px’);»>
      if(window == 1) //Если окно 1
      <
      GUI.Box (new Rect (Screen.width/2-100,Screen.height/2-80,200,220), «Меню»); //Создаем окно с меню

      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-40,180,30), «Новая игра»))
      <
      Application.LoadLevel(1); //Загружаем уровень 1
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-0,180,30), «Настройки»))
      <
      window = 2; //открываем окно настроек
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+40,180,30), «Об игре»))
      <
      window = 3; //Выводим информацию об Автарах игры
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+80,180,30), «Выход»))
      <
      window = 4; //Вызываем окно выхода
      >
      >

      //Далее все аналогично
      if(window == 2)
      <
      GUI.Box (new Rect (Screen.width/2-100,Screen.height/2-80,200,250), «Настройки»);
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-40,180,30), «Игра»))
      <
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-0,180,30), «Аудио»))
      <
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+40,180,30), «Видео»))
      <
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+80,180,30), «Управление»))
      <
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+120,180,30), «Назад»))
      <
      window = 1;
      >
      >

      if(window == 3)
      <
      GUI.Box (new Rect (Screen.width/2-100,Screen.height/2-80,200,220), «Об игре»);
      GUI.Label(new Rect(Screen.width/2-90,Screen.height/2-0, 180, 40), «Инфа о разрабе»);
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+100,180,30), «назад»))
      <
      window = 1;
      >
      >

      if(window == 4)
      <
      GUI.Box (new Rect (Screen.width/2-100,Screen.height/2-60,200,120), «Выход?»);
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-20,180,30), «Да»))
      <
      Application.Quit(); //Выход из игры
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+20,180,30), «Нет»))
      <
      window = 1;
      >
      >

      if(window == 0) //Если это окно то выключаем меню
      <
      useGUILayout=false;
      >
      >

      Скрипт перемещаем на Main Camera.

      Сохраним сцену под названием menu.unity

      Полный код скрипта menu

      200?’200px’:»+(this.scrollHeight+5)+’px’);»> using UnityEngine;
      using System.Collections;

      public class Menu : MonoBehaviour <
      public bool showMenu; //Отображать ли меню
      public int window; //Отображаемое окно
      public float lifeTime = 5.0f; //Максимальное время отображения меню
      private float curTime; //Текущие время отображения меню

      void Start () <
      showMenu = true;
      window = 1;
      >

      void Update () <
      if(showMenu == true) //Проверяем включно ли меню
      <
      curTime += Time.deltaTime; //Если включено, Увеличиваем переменную curTime согласно пройденому времени
      >
      if(curTime > lifeTime) //Если время дошло до максимальной точки
      <
      showMenu = false; //Отключаем меню
      window = 0;
      curTime = 0; //Сбрасываем таймер
      >
      if(showMenu == false&Input.anyKeyDown) //Если меню выключено и нажата любая клавиша
      <
      showMenu = true; //Включаем меню
      window = 1;
      >
      >

      void OnGUI () <
      if(window == 1) //Если окно 1
      <
      GUI.Box (new Rect (Screen.width/2-100,Screen.height/2-80,200,220), «Меню»); //Создаем окно с меню

      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-40,180,30), «Новая игра»))
      <
      Application.LoadLevel(1); //Загружаем уровень 1
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-0,180,30), «Настройки»))
      <
      window = 2; //открываем окно настроек
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+40,180,30), «Об игре»))
      <
      window = 3; //Выводим информацию об Автарах игры
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+80,180,30), «Выход»))
      <
      window = 4; //Вызываем окно выхода
      >
      >

      //Далее все аналогично
      if(window == 2)
      <
      GUI.Box (new Rect (Screen.width/2-100,Screen.height/2-80,200,250), «Настройки»);
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-40,180,30), «Игра»))
      <
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-0,180,30), «Аудио»))
      <
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+40,180,30), «Видео»))
      <
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+80,180,30), «Управление»))
      <
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+120,180,30), «Назад»))
      <
      window = 1;
      >
      >

      if(window == 3)
      <
      GUI.Box (new Rect (Screen.width/2-100,Screen.height/2-80,200,220), «Об игре»);
      GUI.Label(new Rect(Screen.width/2-90,Screen.height/2-0, 180, 40), «Инфа о разрабе»);
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+100,180,30), «назад»))
      <
      window = 1;
      >
      >

      if(window == 4)
      <
      GUI.Box (new Rect (Screen.width/2-100,Screen.height/2-60,200,120), «Выход?»);
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-20,180,30), «Да»))
      <
      Application.Quit(); //Выход из игры
      >
      if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+20,180,30), «Нет»))
      <
      window = 1;
      >
      >

      if(window == 0) //Если это окно то выключаем меню
      <
      useGUILayout=false;
      >
      >
      >

      0 0 голоса
      Рейтинг статьи
      Читать еще:  Онлайн обучение резьба по дереву
Ссылка на основную публикацию
Adblock
detector