Strong-stuff.ru

Образование Онлайн
1 просмотров
Рейтинг статьи
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 проверяем результат.
Читать еще:  Обучение c онлайн бесплатно

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

В сети нужно подыскать схожую по параметрам ещё одну машинку и перенести её в среду 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

      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;
      >
      >
      >

      Возможности движка Unity 3D для создания браузерных игр

      Компьютерная игра на Unity за 30 минут:

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

      Unity 3D

      Графика созданных в Unity 3D объектов имеет достаточно современный вид, не смотря на то, что у разработчика не так много инструментов для ее создания, а именно: SSAO, освещение deferred, набор из постпроцессинговых эффектов, редактор шейдеров и другие стандартные инструменты. Они доступны в интерфейсе разработчика изначально, также, по желанию можно установить или же написать собственные.

      Unity 3D Возможности платформы Unity 3D

      Unity 3D позволяет компилировать написанный код для его должной обработки на различных платформах: Android, Windows, MacOS, iPhone, iPad, iPod, PS3, Wii, Xbox 360 и других.

      По бесплатной лицензии разрешено транспортировать программу только под браузер, MacOS и Windows, что вполне достаточно не только для оценки возможностей движка, но и разработки собственной 3d браузерной онлайн игры класса ААА или приближенной к нему.

      В интерфейсе Unity 3D наличествуют редакторы сцен, игровых объектов и даже скриптов. Кроме этого, в нем установлен удобный генератор террейнов, а также неплохой генератор деревьев.

      Игра на Unity за 10 минут для Андроид и ПК:

      В Unity можно программировать на одном из широко распространенных языков программирования: C#, JavaScript или Boo (диалект питона).

      Движок Unity 3D справляется со многими рутинными задачами, позволяя разработчику сконцентрироваться на другой работе. При этом возможности масштабируемости и производительности движка достаточно высоки.

      В бесплатной версии Unity 3D есть возможность создать полноценную браузерную игру (не без некоторых трудностей), а за 1500$ можно приобрести лицензию с расширенными возможностями программы.

      Возможности платформы Unity 3D Возможности платформы Unity 3D

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

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

      Сравнивая Unity 3D с другими доступными на текущий момент технологиями для создания браузерных игр (Silver Light, Flash, Unreal Engine) можно определить для него индивидуальную нишу.

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

      Возможности платформы Unity 3D Возможности платформы Unity 3D Возможности платформы Unity 3D

      О Unity 3D в Рунете можно прочесть достаточно много материалов, поддержка его пользователей осуществляется на многих русскоязычных и иностранных форумах. Также, в открытом доступе можно найти обучающие материалы и примеры использования движка, которые наглядно покажут его возможности как в сфере создания браузерных игр, так и других интерактивных проектов.

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