Unity3D: быстрый старт. Т.В. Гурьянова,
Д.В. Гурьянов,
Д.Е. Селедцов

Как скачать и установить Unity3D

Перед тем, как выполнять лабораторные работы (или параллельно), рекомендуем пройти урок , в котором показывается, как сделать управляемый самолет.

1. Создать простой ландшафт с fpscontroller, добавить логотип
(см. пример).
Как сделать: Лабораторная работа 1

В проекты Unity3D можно добавлять объекты (в т.ч. и трехмерные), сделанные в других программах.

Одна из простых и быстро осваиваемых программ, работающих с трехмерной графикой — Tinkercad.  Браузерная версия программы доступна на сайте www.tinkercad.com .  3-мерные объекты, похожие на скульптуры из различных материалов, можно создавать с помощью простого в работе и обучении графического редактора Sculptris. Более сложные 3D объекты можно скачать из интернета или сделать самому с помощью одной из профессиональных программ Autodesk 3ds Max , Cinema4D,…

Для вставки в проект Unity3D, объекты  из графических редакторов можно экспортировать с расширением obj, jpg,… и скопировать в папку Assets  проекта.

2. Лабораторная 2. Добавляем освещение

1. Выбираем в Hierarchy FPSController — открывается вкладка Inspector -> AddCopmonent -> Scripts (NewScript) — либо пишем сами,
либо берем готовый файл light.cs (предварительно поместив его в папку Assets нашего проекта).

Вот как должен выглядить файл light.cs:

using UnityEngine;
using System.Collections;

public class light : MonoBehaviour {
public Light l;

// Use this for initialization
void Start () {

l.enabled = false;

}

// Update is called once per frame
void Update () {
if (Input.GetKeyDown (KeyCode.P)){

// При нажатии на клавишу, указанную тут (P) //будет включаться/выключаться свет

l.enabled = !l.enabled;
}
}
}

В Inspector добавятся два поля: Script light, а полем ниже можно выбрать, свойство света:
он может быть «Directional Light», может быть «Spot» («лучик») — попробуйте выбрать одно свойство, затем другое,
понять разницу. Возможно, чтобы лучше рассмотреть проявление свойства «Spot», вам придется повозиться с настройками «Main Camera»

Видео:

 

 

3. Фантастический ландшафт с ветром и водой (на воду пишем скрипт для придания ей реалистичности при погружении )

Лабораторная 3 Unity3D. Пишем скрипт «на воду»

1. Добавляем скрипт на FPSController:
скрипт water_2.cs:

using UnityEngine;
using System.Collections;
using UnityStandardAssets.ImageEffects;
public class water_2 : MonoBehaviour {

public Blur a1;
public ColorCorrectionCurves a2;

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

}

void OnTriggerEnter (Collider other){
a1.enabled = true;
a2.enabled = true;
}
void OnTriggerExit (Collider other){
a1.enabled = false;
a2.enabled = false;}

}

 

2. Выбираем в Hierarchy FPSController, кликаем на него слева — под ним открывается FirstPersonCaracter — выбираем его. На соответсвующей ему вкладке Inspector -> AddCopmonent -> ImageEffects->Blur-Blur.cs — подключаем этот скрипт. Затем Hierarchy-> FPSController-> перетягиваем этот скрипт всоответсвующей ему вкладке Inspector ->написанный нами скрипт water_2 ->A1 — Blur. Аналогично перетаскиваем в A2 ColorAdjustments—>ColorCorection.

Примечание. Удобнее оформить скрипт на FirstPersonCaracter (добавить сам скрипт, перетянуть в окошки переменных эффекты Blur и ColorCorection), затем перетянуть его на FPSController.

3. Самому объекту вода (лучше выбрать WaterProDaytime или WaterProNighttime) нужно добавить во вкладке Inspector -> AddCopmonent ->Phisics->Box Collider. Таким образом мы вписываем воду на карте в параллелепипед, в открывшейся вкладке задаем его размеры, указываем координаты центра, ставим галочку Is Trigger. При пересечении FPSController границ этого параллелепипеда и будут включаться эффекты Blur и ColorCorection.

4. После этого отрегулировать видеокамеру на FPSController таким образом, чтобы коррекция цвета и размытия включались именно при зрительном пересечении поверхности водоема и все выглядело бы реалистично.

Видео:

 

4. Сделать Ландшафт с дорогой.

5. Добавить 3D-объект, сделать возможным респаунить (вернуть в определенную точку карты)
главный персонаж нажатием определенной клавиши на клавиатуре (в примере — «e»).
(см. пример ).
Как сделать: Лабораторная работа 4
Перемещение персонажа в нужную точку карты по нажатии клавиши

1. Создаем карту, FPSController, затем
GameObject->Creat Empty:
переносим в нужную точку карты.
2. Добавляем скрипт на FPSController ( respoun.cs ):

using UnityEngine;
using System.Collections;

public class respoun : MonoBehaviour {

public GameObject nex;

void Start () {

}

void Update () {
if (Input.GetKeyDown(KeyCode.Q))gameObject.transform.position=nex.transform.position;

}
}

3. После добавления скрипта в Inspector’е, в месте подключении скрипта будет доступно поле nex (public GameObject nex; — см. скрипт) — перетаскиваем в него GameObject, созданный в п.1 из Hierarchy .
Аналогично можно создавать точки перемещения по всей карте.
Видео:

 

Лабораторная 5. Unity3D. Клонирование объекта (дерева).
1. Создаем terrain, одно дерево: находим его по названию в Prоject, перетягиваем в Hierarchy.
2. Добавляем скрипт на FPSController
using UnityEngine;
using System.Collections;
Показать полностью…

public class zzz : MonoBehaviour {
void Start () {
//Добавляем клон дерева «Alder» в координату (238,3,270)
Instantiate(GameObject.Find(«Alder»), new Vector3(238,3,270),Quaternion.identity);
//Добавляем в ряд 5 клонов этого дерева
for(int i=0;i<=5;i++)
Instantiate(GameObject.Find(«Alder»), new Vector3(348+i*10,0,277),Quaternion.identity);
}
void Update(){ }
}

6, 7. Добавить возможность подобрать объект нажатием клавиши на клавиатуре (в примере — «e») и нести его перед собой, удерживая эту клавишу. Добавить объект из другой программы, например оружие из CS GO, созданной в Photoshop’е
(см. пример ).
Для просмотра примеров необходимо загрузить и Веб-плеер Unity: http://unity3d.com/ru/webplayer/


Лабораторная 6 Unity3D «собирание» объектов

1. Добавляем объекты, которые хотим «собирать»
2. fps-контроллеру добавляем скрипт:

using UnityEngine;

using System.Collections;

public class get_things : MonoBehaviour {

void Start () { }
void Update () { }
void OnTriggerStay(Collider other){
if (other.gameObject.tag==»trigger»){
if (Input.GetKeyDown(KeyCode.E)){
Destroy(other.gameObject);
}
}
}
}

3. Делаем для объектов «собирания» тэг такой же, как в скрипте (trigger), добавляем всем этим объектам AddComponent/Phisics/BoxCollider + ставим «галочку» trigger + увеличиваем «радиус присутствия» объектов

В итоге, при попадании fps-контроллера в радиус присутствия этих объектов при нажатии на клавишу E они будут исчезать.

 

8. Сделать простой Баннихоп
(см. пример ).

Исходники примеров тут

 

Unity3D: быстрый старт. Т.В. Гурьянова,
Д.В. Гурьянов,
Д.Е. Селедцов: 3 комментария

  1. В строке после начала скрипта о клонировании деревьев очень некстати впихнут нерабочий «показать полностью» элемент.
    Кода в инспекторе я под ним никакого не нашёл. Скрипт и без него, очевидно, целостен.
    Предлагаю его убрать.

    1. Если Вы про скрипт в видео — то это дополнительное задание — сделать его рабочим

Добавить комментарий для Кирилл Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

методические материалы по информатике