Дело №6. Character Controller. TPS.-- Создаем землю: GameObject -> 3D Object -> Terrain.
-- В свойствах Terrain выбираем кисть Raise or Lower Terrain с формой builtin_brush_8, задаем ей параметры Brush Size = 25 и Opacity = 5, рисуем по краям карты горы.

-- В местах, где вершины слишком острые, используйте кисть Smooth Height с формой builtin_brush_1.
-- Экспортируем из DAZ модель с анимацией ходьбы и анимацией ожидания на месте, создаем для нее папку Models в ассетах и перетаскиваем в эту папку наш fbx (см. Дело №4 "Экспорт модели с анимацией из DAZ в Unity").
-- В папке Models нажмите ПКМ, Create -> Animator Controller.
-- Выберите модель непосредственно в сцене. Перетащите Animator Controller мышкой в свойства объекта, вкладка Animator, параметр Controller, вот в этот параметр.
-- Зайдите в Window -> Animation -> Animator. Перетащите анимацию ходьбы и анимацию ожидания в открывшуюся вкладку.
-- Нажмите ПКМ на анимации ожидания, выберите Make Transition, привяжите к анимации ходьбы. Затем ПКМ на анимации ходьбы, привяжем ее к анимации ожидания.
-- ЛКМ на стрелочке первого нашего транзишна, в Conditions нажмем плюсик, чтобы привязать переменную walk. Снимем галочку с Has Exit Time. Всё то же самое со второй стрелочкой, только там изменим значение walk на false.
-- Слева в Parameters создадим переменную Bool, назовем ее walk.

-- Выделяем в сцене нашу модель, вешаем на нее Character Controller: в главном меню Component -> Physics -> Character Controller.
-- Настраиваем гизмо по размеру модели: ширина по плечам, рост по макушке и стопам.
-- В свойствах модели в разделе Animator выставляем такие параметры (название модели у вас будет другим):

-- В корневой папке ассетов создаем папку Scripts, в ней создаем C# скрипт.
-- Откроем скрипт двойным кликом и вставим следующий код вместо того, который там написан:
using UnityEngine;
using System.Collections;
public class NewBehaviourScript : MonoBehaviour
{
CharacterController controller;
Animator animator;
public float speed = 2;
// Use this for initialization
void Start()
{
controller = GetComponent<CharacterController>();
animator = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
float x = Input.GetAxis("Horizontal");
float z = Input.GetAxis("Vertical");
if (x != 0)
{
transform.Rotate(0f, x * speed, 0f);
}
if (z != 0)
{
animator.SetBool("walk", true);
Vector3 dir = transform.TransformDirection(new Vector3(0f, 0f, z * speed * Time.deltaTime));
controller.Move(dir);
}
else
{
animator.SetBool("walk", false);
}
}
}
-- Перетаскиваем скрипт на модель (в инспектор свойств, между панельками).
-- Подвинем камеру поближе к правому плечу модели, затем перетащим камеру на модель в иерархии объектов, чтобы прикрепить.

-- Теперь запустим, нажав кнопочку Play. Модель должна ходить по нажатию клавиш W и S, поворачиваться по нажатию A и D.