Пользователь
0,0
рейтинг
22 января 2011 в 01:06

Разработка → Unity3D для начинающих — Туториал 1

Предисловие


Хабралюди проявили некоторый интерес к Unity, поэтому открываю этим постом цикл туториалов, освещающих основные моменты работы с объектом (цикл неопределённой пока длительности — если кому окажется полезным продолжу).

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

Let's get it started



Предстартовая подготовка

Для начала качаем и устанваливаем собственно сам Unity на офсайте, выбрав лицензию с ценником Free. Можно скачать и тридцатидневный триал UnityPro, это на ваш вкус.

При первом запуске перед вами предстанет окошко Project Wizard'а (у вас там будет пусто):



Для общего ознакомления можете открыть прилагавшийся в комплекте BootcampDemo, который в винде ложится, как ни странно, в «DocumentsAndSettings\AllUsers\Документы\Unity Projects\Bootcamp Demo».
Для продолжения же нашего обучения переходим на закладку Create New Project и отмечаем галочками наборы стандартных игровых объектов и скриптов, которые нам понадобятся. Понадобятся нам
  • Character Controller
  • Particles
  • Physic materials
  • Scripts
  • Skyboxes
  • Terrain Assets
  • Tree Creator

А можно отметить все, что там только можно отметить галочками. Запас карман не жмёт.



Выбираем папку назначения, жмём Create и ожидаем, пока небыстрый процесс импорта завершится. В конце перед нами предстанет пустое поле для экспериментов:



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

Иерархия объектов на сцене — это список всех объектов на текущем уровне, показывающий заодно отношения Parent-Child.

Инспектор объектов показывает компоненты и их свойства выделенного в данный момент объекта — модели, текстуры, префаба.

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

В главном окне редактирования мы пользуемся всеми прелестями драг'н'дропа для расставления объектов по уровням.

Для начала посмотрим, что у нас уже есть в дефолтной сцене. Негусто, правда? Объект с говорящим названием Main Camera, по нажатию на название которого в иерарахии мы увидим конус viewport'а и маленькое окошко с видом из камеры.

Сразу расскажу основные контролсы окна редактирования:
  • средняя мыши — передвижение камеры вправо-влево (по внутренней плоскости xy)
  • левый клик — понятное дело, выделение объекта (хотя тяжело бывает переключаться между Blender'ом и юнити :) )
  • правый клик — вращение «головой»
  • F — центрирование на выделенном объекте
  • перетаскивание объекта с зажатым ctrl — перетаскивание с шагом в 1 единицу координат

Кстати о координатах — разработчики советуют принимать 1 юнит игрового пространства за 1 реальный метр, и лучше этого придерживаться (хотя бы чтобы с физикой меньше возиться).

Земля обетованная

Но возвращаясь к нашим баранам, создадим поверхность, по которой будем ходить. Моделей у нас нет пока, поэтому можно создать просто большую плоскость… Но мы создадим землю, то бишь Terrain — он покрасивше голой плоскости будет. Для этого в меню выбираем Terrain->Create Terrain. Вуаля!



Опять-таки, не очень впечатляет. Для начала, сменим размер земной тверди через Terrain->Set Resolution. По умолчанию параметры Length и Width равны 2000, т.е. 2 км на 2 км. Для тестовых побегушек нам столько не надо, потому пишем в эти поля 500 и 500 — более чем достаточно.

Теперь назначим земле текстуру. Для этого выделяем террейн (в главном окне или в иерархии), и наблюдаем доступные свойства в инспекторе объектов. Там мы увидим инструменты для редактирования террейнов (стандартные — поднять\опустить, сгладить, и т.д.). Можете сразу начать рисовать нужный вам ландшафт, но в данный момент нас интересует кнопка с кисточкой Paint the terrain texture. А на закладке, которую она открывает, кнопка Edit textures, в меню которой жмём Add Texture:



Откроется окошко с параметрами будущей текстуры. Находим среди них один со значением «None (Texture 2d)» и кликаем на шарик с точкой справа от этих слов. Откроется выбиралка текстуры из уже добавленных в ресурсы проекта. К слову, чтобы добавить текстуру в проект, достаточно её просто скопировать в папку проекта — юнити все сам подхватит. Импорт всего остального происходит анналогично а удаление ресурса из проекта означает физическое удаление с диска.

Выбираем нужную текстуру, например Grass(Hill). Можно добавить ещё несколько текстур, например Cliff (Layered Rock), и, пользуясь кистью, выбираемой чуть выше, раскрасить по своему усмотрению. У меня после предыдущих манипуляций получилось вот так:



Если мы в данный момент нажмем на кнопку «Play» вверху экрана, то вы увидите, скорее всего, кусок нашей плохо освещённой земли на голубом фоне. Но так ведь неинтересно, поэтому прежде чем продолжить, нам надо добавить на сцену освещение, симулирующее солнечное, и заменить голубой фон небом. Свет добавляется через главное меню, GameObject->Create other->Directional light. Затем, следуя картинке, нажимаем кнопку которая меняет стрелки-хелперы вокруг выделенного объекта на оси вращения. Тягая за эти оси мы, как ни странно, вращаем осветительный прибор так, чтобы земля покрасивше подсвечивалась.



Чтобы вместо голубого полотна над головой было небо, надо указать текстуру скайбокса (skybox — «небесная коробка», куб, на который изнутри натянута текстура, как правило — панорамная фотография неба, сделанная таким образом, что изнутри кажется, будто ты окружен шаром с этой текстурой. Именно так в большинстве игр и рисуется небо). Для этого заходим в меню Edit->Render Settings, находим свойство «Skybox material» и, как мы это делали с текстурой земли, жмем на кружок с точкой справа от него. Нам покажут материалы, имеющиеся в проекте (чтобы не ходить в дебри терминологии, будем считать что материал это текстура и то, как она будет отображаться — будет она прозрачной, или будет блестеть, и т.д.). Выбирайте любой со словом skybox, например sunny2 skybox. Отлично, теперь наш полигон выглядит поживее.

Управление и камера

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

Вообще-то, в комплект Юнити входят два игровых объекта, дающих готовое, уже собранное решение для камеры и управления. Но я о них вам пока не скажу, чтобы был стимул собрать своими руками. :)

Для начала, создадим объект для игрока. Вернее, чтобы не плодить лишние скрипты, переименуем «Main Camera» в «player». Теперь, выделив камеру, в меню выберем Component->Physics->Character Controller. Character controller — это компонент, который обрабатывает положение объекта (вернее, персонажа) в пространстве: его движение, повороты, падения, прыжки и столкновения с другими объектами. Все это можно делать напрямую, без помощи этой обертки вокруг стандартных функций перемещения объектов и проверки коллизий, но тогда код реализации передвижения вырастает в разы, что плохо для первого знакомства с движком. А так, в общем-то, можно на первом уроке и не кодить :)

<Лирическое отступление>

В качестве лирического отступления стоит рассказать о компонентах.



Любой предмет, который мы видим на сцене — это экземпляр класса с говорящим названием GameObject. Он имеет некоторое количество т.н. компонентов — в свою очередь, являющихся экземплярами своих классов. Каждый компонент выполняет некую утилитарную функцию. Так, у каждого GameObject должен быть компонент Transform, который занимается тем, что хранит текущие координаты, угол разворота и размеры объекта в трехмерном пространстве. Ну и заодно содержит методы для выполнения действий над положением объекта в этом пространстве: пермещение, развороты и т.д., т.е. когда мы в редакторе тянем объект за стрелки-управляторы, мы меняем координаты его трансформа.

А вот например компонент RigidBody занимается тем, что обрабатывает физическое поведение объекта: всё, что мы видим, когда бочка от выстрела падает на бок и катится — результат работы RigidBody. Который, кстати, не сможет правильно работать, если не назначить объекту компонент типа Collider, который хранит в себе трехмерную модель, по которой определяются столкновения объекта. Эта модель не отображается, но именно она, а не та что мы видим на экране во время игры, проверяется на столкновения с окружающим миром.

</Лирическое отступление>


Вокруг камеры мы теперь видим зелёные линии, образующие купсулу, по которой рассчитываются столкновения с игроком — его, так сказать, тело. Камера находится в середине этой капсулы, но нам же не нужны глаза на поясе (хотя ситуации бывают разные :) ), поэтому надо передвинуть камеру в район предполагаемой головы персонажа. Но эта капсула — часть объекта с единым Transform, а потому подвинуть её отдельно от камеры не получится. К счастью, если в инспекторе объекта мы глянем на свойства, доступные для Character Controller, то увидим там свойство Center, с параметрами x, y, z. То есть мы можем сдвинуть центр капсулы относительно центра объекта. Ставим y = -0.8 и получаем нормальную высоту глаз.

Если мы теперь поставим нашего player'а над поверхностью земли и включим Play, наша камера всё ещё будет стоять на месте. Так происходит потому, что Character Controller лишь обрабатывает поступающие к нему управляющие команды, сама они инициативы не проявляет. Чтобы разъяснить ей, что делать, драг-н-дропнем на player'a скрипт, который лежит в инспекторе префабов в папке Standart Assets\Character Controllers\Sources\Scripts и зовётся «CharacterMotor». Его задача — используя методы Character Controller осуществлять основную рутину передвижения: реализовывать действие гравитации, прыжки, вычислять текущую скорость и направление движения. Запуск уровня теперь заставит камеру игрока падать на землю — уже что-то.

Но мы всё еще стоим на месте: ведь у нас нет скрипта, который перехватывал нажатия клавиш и сообщал о них в CharacterMotor. Этим занимается лежащий в той же папке скрипт FPSInputController. Кидаем его на игрока, запускаем и ура — кнопки W, S, A, D теперь позволяют ходить, а пробел — прыгать! Но ходим-то мы всё как-то в одну сторону, вправо-влево да приставным шагом. Чтобы вертеть головой и идти куда глаза глядят, понадобится ещё один скрипт, оттуда же: MouseLook. Кидаем, запускаем — и получаем полноценное управление.

Теперь можно поиграться с переменными. Character Cоntroller установил вместе с собой Character Motor — в его-то свойствах и хранятся такие параметры, как Gravity, Max Forward Speed, Jumping Base Height и всякие другие. Вот они, все плюсы Инспектора — все основные свойства классов всегда на виду, даже в код лезть не надо.

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

Стрельба по изредка движущимся мишеням

Бегать по собственноручно сделанным холмам, любовно раскрашенным аж тремя текстурами, конечно, весело. Но вскоре надоедает. Поэтому мы выберем в меню GameObject->Create other->Cube, разместим этот куб в воздухе рядом с игроком, в свойствах Transform у него укажем следующие параметры Scale (x, y, z): 3, 3, 3; и запустим уровень, чтобы посмотреть, что этот куб будет делать. Делать он не будет ровным счетом ничего, если честно. Но стоит, выделив этот куб, назначить ему, Component->Physics->Rigidbody, при следующем запуске мы увидим совсем другую картину. Куб падает, крутится, почти как настоящий, правда как картонный — масса его по умолчанию 1 кг, что для таких размеров маловато, но мы её пока трогать не будем.

Выделив куб, нажмём Ctrl+D (дублирование объекта), и с зажатым Ctrl потянем куб вверх до тех пор, пока кубы не будут расположены один над другим. Теперь у нас два совершенно одинаковых куба ровно друг над другом. Повторим эту процедуру кубов до 15, и посмотрим на падение Вавилонской башни.

Далее, создаем новый куб, но не назначаем ему Rigidbody. Из него мы сделаем ровную поверхность для удобства стрельбы. Задаем ему Scale: 150, 20, 150; и располагаем где угодно — главное разместить на нем нашу башню и игрока. У меня получилось так:



Теперь создадим оружие и патроны. Патронами будет служить префаб, который мы создадим в инспекторе префабов нажав на кнопку «Create» вверху инспектора, и выбрав там собственно Prefab. Новый префаб создастся в той папке, что была открыта в тот момент в инспекторе. Он будет подсвечен серым, что символизирует отсутствие у него компонентов. В главном меню жмём GameObject->Create other->Sphere, находим в иерархии сцены эту Sphere, вешаем на неё Rigidbody. Но для пущей красоты зайдем в свойства этого Rigidbody, что мы только что повесили, и изменим парамтер Mass на 5.

После этого перетаскиваем сферу из списка в иерархии на созданный нами префаб. Префаб становится голубым, а вместе с ним синеет и имя сферы на сцене — это означает, что она является клоном префаба. Переименовываем префаб из дефолтного имени в, допустим, prefab_bullet. Для красоты. Пуля готова!

Следующим шагом будет создание оружия, вернее — скрипта, стреляющего по клику мыши этой самой сферой. Рядом с префабом создаем файл JavaScript'а: Create->JavaScript. Называем его, например, player (ну, чтобы не путаться). Даблкликом по нему откроется встроенный скрипторедактор, в котором мы заменяем содержимое файла вот этим (разбирать пока что не будем):

public var bulletImpulse = 300;
public var shootSpeed = 1;
public var bullet : GameObject;

public var lastShotTime : float;

function Start() {
lastShotTime = 0;
}

function Update () {

if (Input.GetKey(KeyCode.Mouse0)) {
if (Time.time>(lastShotTime + shootSpeed)) {
var bull_clone : GameObject;
bull_clone = Instantiate(bullet, transform.position, transform.rotation);
Physics.IgnoreCollision(bull_clone.collider, collider);
bull_clone.rigidbody.AddForce(transform.forward*bulletImpulse, ForceMode.Impulse);
lastShotTime = Time.time;

}
}

}


Дальше сохраняем скрипт, и по отработанной схеме — перетаскиваем его из окна префабов на нашего player'а, что стоит посреди белой плоскости. Выделив его теперь, мы увидим… Вот что:



А это значит, что скрипты цепляются к объектам так же, как и компоненты, и управлять ими можно так же. Вернее, они и есть компоненты, но это сейчас несущественно. Существенно сейчас нажать кружок с точкой рядом с параметром Bullet и в открывшейся выбиралке найти наш префаб со сферой. Выбрав его в качестве пули, можно смело запускать уровень и наслаждаться стрельбой ядрами по картонным коробкам.

Если, конечно, НЛО не вмешалось в мои мысли и я не пропустил какой-то важный шаг.

Фух.

Fin


Надеюсь, что я достаточно подробно осветил то, что надо было осветить, и не зацикливался на неважных мелочах. Пусть этот туториал и носит ознакомительный характер, хотелось бы верить, что он кому-то окажется реально полезен. Жду рациональной критики и пожеланий на следующий выпуск. Спасибо за внимание!
@Navij
карма
83,5
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (107)

  • 0
    Хм. Я чего-то не понимаю, или половину моего туториала отрезало?
    • +6
      Извиняюсь, товарищи, после последней строчки должно было быть ещё примерно столько же текста. Черт. Странно, а в черновиках нормально сохранялось и показывалось…
      • +4
        Ещё раз извиняюсь, видимо у меня черновик был открыт в нескольких вкладках, и я по ошибке запостил недописанную версию. Исправлюсь в ближайшее же время. Позор моим сединам…
        • +6
          Исправился. Форматирование в спешке не стал восстанавливать, сохранил суть.
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        а что по поводу Boo?
      • +2
        Ну, какбы обоснуйте.
        ИМХО без разницы на чем в Unity скрипты писать.
        • 0
          Когда код разрастается до неприличных размеров, начинаешь проклинать этот Яваскрипт. А вообще да, без разницы…
          • +1
            а конкретнее? а то все общие фразы сильно
            • 0
              Жаль, что на хабре нет тэгов для спойлеров — тогда бы я и на том и на том писал…
            • 0
              Да взять хотя бы отсутствие специализированного ИДЕ. В стандартном редакторе удобно писать до тех пор, пока код влезает в один-два экрана.

              За остальное говорить не буду — вопрос чересчур спорный и субъективный. Не люблю холивары.
              • 0
                Не знаю как в Windows версии Unity, но вот в Mac версии вместе с ней идет модифицированная версия MonoDevelop, которая является централизованной IDE для JS и для C# и писать там очень удобно.
          • 0
            Видимо, просто нужно хорошо знать Javascript =)
      • +3
        Я сам пишу на шарпе, а на яваскрипте написал в целях доступности. Для начинающего, как правило, даже явные указания типов являются отвлекающим моментом, мешающим понять смысл написанного. А переучиться потом на шарп будет легко. Хотя если много людей отзовутся за код на шарпе, будет код на шарпе, конечно же.
        • +2
          Я за шарп.
        • 0
          а как с поддержкой c# в unity под мак?

          м.б. JavaScript кросплатформеннее?
          • +1
            Да так же с поддержкой. Это только Boo нет на айфоне, а так все везде работает одинаково. Тем более, как я вчера выяснил, это не JavaScript, это ЯП, написанный самими разработчиками Unity, почти целиком копирующий яваскрипт. Они это зовут «our JavaScript implementation». Сам раньше не замечал.
          • 0
            Посмотрите скринкасты. Там люди пишут на маках и запускают и тестируют тут же :) Я думаю, это какбы намекает на том, что кроссплатформенность уже есть по умолчанию.

            + Что мне нравится у них есть спец версии для iOS, а так же с напильником можно сразу испортировать на Windows mobile 7. Ну не счастье ли?
            • 0
              где вы нашли версию под Win mobile 7?
            • 0
              Ога, «испортировать» от слова испортить?) Я понимаю, что это просто опечатка, но уж очень хорошо передает смысл. Вообще я с большим скепсисом отношусь к кросплатформенности в мобильных приложениях, ибо жизненный цикл процесса в том же андроиде, коренным образом отличается от такового на иос.
        • +1
          Шарп, шарп однозначно.
        • +4
          Javascript =) Тем более, его знают почти все, в т.ч. СиШарпники. А если писать наа СиШарп, то сразу ограничите аудиторию.
          • –1
            А может оставим Javascript для сайтов и остальных поддающихся скриптованию вещей?

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

            Насчет знания, я считаю так:
            Код должен быть как книга, и его должен понять любой читающий, даже если он не программирует на этом языке. Он должен быть хорошо закомментируем. И никаких проблем с понимаением кода :)
            • 0
              А может оставим CSharp для *тут что-то не относящееся к теме*?

              Не хочу разводить священных войн, но мне кажется нереспектабельным писать что-то серьёзное на СиШарпе

              А Javascript при должном подходе отлично поддерживается даже на огромном количестве кода. Тем более, «ооп»-составляющая в нём намного мощнее, чем в СиШарпе.
              • –1
                «мне кажется нереспектабельным писать что-то серьёзное на СиШарпе» — это вы действительно серьезно?
                "«ооп»-составляющая в нём намного мощнее, чем в СиШарпе" — не могли бы вы привести конкретные примеры возможностей javaScript, перед которыми ничто все, что есть в C#?
            • 0
              И да, вы правы на счёт «Код должен быть как книга, и его должен понять любой читающий, даже если он не программирует на этом языке. Он должен быть хорошо закомментируем.». Тогда в чём проблема, если код будет на Javascript.
  • +6
    Туторы это отлично, огромное спасибо.
    Давно поглядываю в сторону этого двига, но копаться как-то времени не хватает.
    С туторами будет значительно легче.
    • +6
      Приятно слышать, что это кому-то надо, так что это вам спасибо.
  • +2
    Спасибо! Пробовал разобраться сам по докам — не хватило времени и энтузиазма. С вашими туторами будет заметно проще.
  • +3
    Серьезные сцены удобнее отдать делать artist'ам в 3DS Max'е том же. Единственное что плохо — что из FBX (промежуточный формат между максом и юнити) Unity не импортирует источники света. Пришлось писать плагин к Unity на С++. А это доступно только в платной версии. Вобщем намучались с этим движком.
    Еще есть одна проблема — плохо работает с SVN и ему подобгными. Похоже что идеальная работа только с их Asset Server'ом. Пичаль (
    • 0
      Ваш проект, скорее всего, все-таки выходил за рамки того, на что рассчитан юнити. Как я в обзоре честно написал — если есть большие запросы и ресурсы, прийдется покупать что-то с исходниками. Или самим писать. А бесплатный сыр… :)
      • 0
        пожалуй, стоит в обзоре указать подобные минусы.
      • 0
        я думал юнити расчитан на многое, если не ошибаюсь nfs world сделан на юнити
        • +1
          На многое, и не только nfs world на нем. Просто в некоторых местах, видимо, все-таки есть костыли. С другой стороны, тот же Огре разве не без костылей? Или флеш (да, он тут не при чем, но просто для примера — сколько людей им пользуется, несмотря на все костыли)? Просто надо отмечать негативный опыт и стараться обходить узкие места стороной.

          С другой стороны, всех проблем у автора не было бы, если бы он изначально владел платной версией и Asset Server'ом. Политика, конечно, хреновая, но это, к сожалению, бизнес.
    • 0
      Спасибо за заметки. Не думал что есть такие проблемы.
  • –1
    Обращаю внимание, что существует он только для Windows и Mac OS X и больше никуда портировать Unity3D разработчики не собираются, как и открывать исходники.
    • +3
      iOS, Android, Wii, обещанный Xbox и PS?
      Source Code License по запросу?
      Весной еще показывали демку в ChromeOS без плагинов через NativeClient
      • 0
        Source code License? Я что-то пропустил в этой жизни?
        • +2
          store.unity3d.com/shop/
          В самом низу. Доступно по персональному запросу.
          • 0
            Спасибо, футер-то я и проглядел…
      • –1
        Где скачать? Версию для Android на оф. сайте не нашёл, как и для всего остального вами перечисленного.
        • 0
          Ссылка в ответе на прошлый комментарий
          • 0
            Хотите сказать, за плеер для Андроида нужно заплатить $3000?
            • 0
              Всего-лишь 1500
            • 0
              Нет, за возможность сборки из своих игр родных apk. Если разговор шел про плеер то да, сейчас он работает только в винде и маке. Но сам движок портирован на все платформы, которые я перечислил и способен собирать нативные приложения для них.
  • +6
    Черт побери, какое совпадение: именно сегодня я скачал Unity и как раз сейчас пытаюсь освоить его :)

    Пока что сумел только перенести алгоритм Diamond-Square, о котором недавно сам писал статью:


    Возможно, все-таки стоит взяться за реализацию своего майнкрафта с блекджеком — все возможности вроде есть :)

    Спасибо огромное за статью — уверен, окажется весьма полезной!
    • 0
      Да, Юнити все-таки получше будет в плане возможностей, чем LWJGL будет. Самого мучала подобная идея (а то от Нотча апдейтов ждать — повеситься можно), и не только нас с вами — на оф. форуме сотня таких тем, даже на русском коммьюнити попадаются :) Очень уж заманчиво — игровая механика внешне простая, графики никакой… А сколько идей в голове! :)

      Только все-таки это не то уже будет. Есть у Нотча какой-то таракан специфический, имхо, который ему Майнкрафт нашептал. Хотя основную идею он из Wurm Online взял, не факт что она его была изначально.
      • 0
        Но насчет полезности все-таки сначла прочитайте — я старался сделать тутор максимально доступным, поэтому реальной информации в нём мало. Информация планируется в продолжениях
        • +2
          Когда только-только начинаешь — полезны и не особенно информативные материалы, но такие, чтобы было все максимально «разжевано», чтобы не спотыкаться на элементарных вещах.

          И продолжений тоже будем ждать — особенно на тему скриптинга. А то вроде и джаваскрипт, да какой-то не такой (то вдруг окажется, что Array только прикидывается настоящим Array'ем, то на одиночные кавычки заругается, то еще что-то). Ну и плюс, конечно, к собственной архитектуре классов привыкать нужно.
          • 0
            Вообще-то, это как бы не совсем яваскрипт. Я-то писал на шарпе все время, скриптом этим не пользовался (но для туториала решил его использовать), а тут вот поискал и заметил (цитата с офсайта):

            Unity's JavaScript implementation runs the same speed as C# and Boo.

            Смущает слово Implementation. А на русском комьюнити нашел вот такую фразу:

            «Нет. Это не классический JavaScript. Это Unity Script — ЯП написанный на основе Boo и имеющий синтаксис и функционал практически идентичный классическому JavaScript. »

            Вот так-то… Покопаюсь на эту тему на досуге

            • 0
              К слову про скрипты — на хабре исходники лучше оборачивать не в <code>, а в <source lang="javascript">. Это даст команду парсеру подсветить синтаксис и сохранить отступы, что прибавит наглядности коду.
              • 0
                О, и точно! Спасибо, я как-то пропустил эту строку в описании доступных тегов.
      • 0
        спасибо за наводку на Wurm Online
        • 0
          Увы, сейчас в неё стало тяжело играть. Народу тОлпы, хижину негде поставить. Да и тормозит жутко — все-таки ява не та платформа, на которой стоит такие вещи делать. А вообще игра забавная, с одной стороны задротство и корейский рандом в квадрате, а с другой — увлекает обилие возможностей. Я по ММОРПГ не очень, но эту даже погонял пару дней
  • +1
    С интересом вчера прочитал обзор о Юнити, скачал, чтоб посмотреть, что за зверь — а тут и туториал подоспел =) Буду разбираться — на первый взгляд выглядит все очень многообещающе, опять же тридэ в браузере…
    • +1
      Попробуйте-попробуйте :) По крайней мере в браузере его пока сложно кому-то переплюнуть (поправьте если не прав). Да и так процесс легкий и непринужденный (правда, как многие отзываются, стоит залезть поглубже и захотеть многого — начинаются проблемы. Ну а где по-другому бывает?).

      Со вторым туториалом не уверен, что справлюсь завтра, но попытаюсь.
      • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Давно хотел заняться, но все руки не доходили. А тут отличная мотивация, спасибо!
    • +1
      Ну, по крайней мере с этой стороны пользу моё начинание принесло — сподвигло кого-то на расширение кругозора. Удачи вам!
  • 0
    Отличный способ заработать на app store, если бы не лицензия :)
    • +1
      400$ стоит конвертер под iOS. Если не для одной игры, то это фигня :)
  • 0
    А я по скринкастам занимался:
    www.burgzergarcade.com/hack-slash-rpg-unity3d-game-engine-tutorial

    Но думаю в тестовом виде будет тоже полезнее. Тем более можно сразу задать вопрос по туториалу.
    • 0
      Мне скринкасты не нравятся тем, что приходится их смотреть от начала и до конца — туча времени уходит. И сорцы не скопируешь. А вообще тутор хороший, надо тоже глянуть для развития

      Вопросы задавайте — наверняка я где-то налажал в середине :(
  • +3
    С Юнити пришлось столкнуться года 1,5 назад, когда необходимо было провести работу по ландшафтному дизайну. Заказчику хотелось погулять в реальном времени по созданной виртуальной площадке. Юнити справился с этой задачей просто превосходно. Однако на этом все закончилось. Но раз уж такой цикл статей начался, то хотелось бы, чтобы автор побольше внимания уделил особенностям программирования в юнити, с примерами. Считаю эту часть более сложной.
    • 0
      Да уж, надо надеяться на продолжение туториала со скриптами и программированием. Работу с плагинами придется, видимо, осваивать самостоятельно, но дело того явно стоит — сделать на Unity виртуальную лабораторию, судя даже по этому туториалу — практически раз плюнуть, если есть модели. Будем ждать…
      • 0
        Продолжение будет — начну тоже с основ, но постепенно буду более глубокие моменты раскапывать. Постараюсь поскорее, конечно же

        Лабораторию — не вижу совершенно никаких проблем, кроме ввода внешних данных. Даже модели можно без особых навыков склепать (если конечно там не адронный коллайдер визулизировать надо). Рукописные плагины только в платной версии… Хотя как вариант — юнити же умеет по сети общаться. Можно так этот вопрос решить

        А визуализация ландшафтов и интерьеров — достаточно широкая область у юнити, я смотрю — даже на хабре натыкался на интерьерный дизайнер на Юнити.
  • +3
    посмотрев на название темы подумал что статья будет про графический интерфейс Unity, еще больше обрадовался увидев что статья про Unity3d (в Unity3D я влюбился с первого взгляда, как когда то в autodesk maya )
    может все же в заголовке указать именно Unity3D чтоб не было путаницы
    • 0
      О, действительно. Сейчас поправлю
    • 0
      Game Development же
      • 0
        так быстро кликнул, и жадно стал читать тутор, что даже и не углядел «Game Development»
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Очень хороший урок, большое спасибо.

    Я недавно заинтересовался платформерами. Можете ли вы после FPS попробовать написать про них? Стандартный туториал мне не понравился, там нужно только перетаскивать готовые скрипты и объекты.
    • 0
      Не за что :) Да, стандартный туториал вообще ни о чем. И Lerpz этот их какой-то стремный. Конечно, напишу и про платформер. В принципе, можно уложиться будет в один туториал — с рассчетом на то, что вы уже прочитаете предыдущие и будете понимать, что пишете в скриптах.
      • 0
        О, это было бы здорово :)
  • 0
    классно. от души развлёкся. очень жду продолжения.

    а пока вы его пишите ( надеюсь (: ), не подкините ссылочку на какой-нибудь подобный туториал о том, как сделать простенький платформер?)
    • +1
      Честно, я туториалами не пользовался вообще. Пытался официальными, но безрезультатно. Но в комментариях к обзору мне подкинули ссылку на unifycommunity.com/, говорят там много туториалов, но ресурс на английском. Также поищите на русском сообществе, там много полезных материалов.
  • 0
    Порекомендовал бы для подсветки кода использовать какой-либо сервис из этой статьи.
  • 0
    А вот интересно, почему у меня игрок(камера) как бы проваливается сквозь террейн при нажатии на кнопку «Пуск»?
    То есть, не держит его Земля, почему-то )
    • 0
      Попробуйте чуть повыше его поместить.
      • 0
        У меня тоже проваливается.
        И gravity по умолчанию для player было равно 0.
        mass по умолчанию 1.

        При добавлении Rigidbody никакой капсулы не видно.

        Установлена последняя версия.
        • 0
          А если компонент Character Motor добавить?
          • 0
            Character Motor автоматом добавляется вместе с FPSInputController
            • 0
              Может, вышеотписавшиеся проcто не дошли до добавления FPSInputController? В туториале-то написано, что капсула должна появиться уже после добавления Character Controller.

              Я-то еще проще поступал — кинул из Standard Assets префаб First Person Controller и у меня сразу все заработало :)
              • 0
                капсула появляется с Character Controller'ом все-таки. Но с одним Character Controller'ом и Mouse Look'ом камера даже не будет падать — видимо, у человека Rigidbody стоял а не он (gravity и mass у Rigidbody есть). Я перепутал, что камера на этот момент уже должна падать на землю — видимо, это и ввело его в заблуждение.
              • 0
                А про префабы эти я нарочно не сказал, чтобы объяснить суть компонентов :)
        • 0
          Запостите скрин инспектора с выделенным player и развернутыми компоенентами, пожалуйста
        • 0
          Поправил туториал так, чтобы не возникало двусмысленностей в этом моменте. Если все ещё не работает, пишите в личку.
  • 0
    Есть отличная игрушка — Don't shoot the puppy.
    Там тоже нужно ничего не делать, иначе умирает щенок.
    С каждым следующим уровнем ничего не делать все сложнее и сложнее — авторы довольно изобретательны 8)
    Лежит тут: www.rrrrthats5rs.com/games/dont-shoot-the-puppy/
    • 0
      Бляха-муха. Эпик фейл — закомментил не в тот топик 8)
      Ну ладно, зато пока выжидал 5 минут, прошел до 7 уровня.
      • 0
        Ничего, я вон по ошибке половину туториала отправил изначально :) А игрушка забавная.
    • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    извините за оффтоп, не могу удержаться, Tron и Unity3D: trongames.go.com/
  • 0
    пытаюсь наложить текстуру на пульку, но шарики все равно вылетают без текстуры, хотя сфера в сцене текстурирована
    • 0
      Если хотите применить текстуру на все копии пульки, добавляйте её к префабу, а если все-таки добавили к объекту на сцене — выделите его и нажмите в меню GameObject->Apply Changes To Prefab — и все будет хоккей :)
      • 0
        омг, это же очевидно, спасибо большое
        • 0
          Вовсе не очевидно, для того и пишутся туториалы — чтобы пока не разобрался с интерфейсом и API каждую кнопочку и функцию по два часа не искать
  • 0
    Не понял, как сделать неровную холмистую поверхность.
  • 0
    Жду второго туториала. Когда намечается продолжение? Изучать Unity по таким урокам одно удовольствие
    • 0
      О-хо-хо… Я этот туториал аж в январе написал, и даже вторую часть на 70% написал, а потом как-то внезапно свалилась куча работы, семья, etc… Просто руки не поднимаются сесть и написать. Дело в том, что если продолжать объяснять все в таком формате, то как только дело доходит до более-менее серьезных вещей, туториал распухает до космических объемов, и продолжает пухнуть и пухнуть, по пути заставляя переписывать куски из начала и середины (потому что замысел изменился пока писал конец), и так без конца. Эта туша просто начала меня угнетать своей массой и отсутствием времени на то чтобы её даже просто перечитать, я уж не говорю — проверить на целостность.

      Я пробовал разбивать процесс на кванты, но безуспешно. А вообще знаете, вы потревожили во мне сосущее чувство ответственности за эти уроки, которое и так меня мучало периодически эти полгода, и я попытаюсь их продолжить. Только на этот раз я не буду пытаться сразу объяснить, как сделать стреляющее оружие, впервые войдя в Unity, а начну с простых вещей.
      • 0
        Спасибо! Продолжайте в том же духе. Благодарен вам за этот труд.
      • 0
        Мы все еще ждем :)
        Если 2 часть готова только на 70%, и дальше продолжать — желания нет, то не могли бы вы скинуть мне на электронку эту работу? Жутко интересно…
  • 0
    Спасибо огромное!!! Очень полезно!
  • 0
    Народ кто может в Unity3D написать игру подобную? Evocraft / Эвокрафт
  • 0
    Странная штука: на Маке клавиши WASD не работают точнее работают редко =( может кто сталкивался?
  • 0
    Нда, видно у автора времени все же нет. Обидно ((( Но за этот тутор большое спасибо. Обычно сам разбираюсь во всем, а тут ну просто что-то залип.
    • 0
      Да, к сожалению, я так и не смог выделить достаточно времени на написание этих уроков( Где-то с полгода назад даже завел отдельный блог, где начинал выкладывать новые уроки, но опять встал вопрос – либо перестать этим заниматься, либо меньше времени тратить на работу и семью, и думаю, мой выбор очевиден. Если бы я придумал какой-то механизм монетизации своих уроков, тогда можно было бы с чистым сердцем тратить часов 10-15 в неделю на это (примерно столько отнимает написание одного урока вместе с вычиткой и проверкой исходников), но ничего дельного по этому поводу я придумать так и не смог (кроме как продавать собственно уроки, а это пОшло).

      Хотя если кто-то в ближайшее время возьмет на удаленную работу PHP программиста или Unity3d-разработчика без особого портфолио, то тогда время на статьи, скорее всего появится)
  • 0
    Отличный туториал! Жаль что не продолжения! :(
    >>будет служить префаб, который мы создадим в инспекторе префабов
    Понятнее было бы Assets-Create-Prefab. Впрочем, не исключаю, что это просто свежая версия Unity…

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.