Предварительная настройка Unity
- Устанавливаем Unity 2019.3.10f1
- Загружаем в Asset Store -> Standart Assets и Terrain Tools.
- Загружаем Window->Package Manager->Terrain Tools.
Создание персонажа.
- Создадим модель персонажа в Steam -> Fuse.
- Выгрузим персонажа в формате OBJ со следующими настройками.
- Зажмем файл Obj и текстуры в zip архив.
- Загрузим данный архив на сайт mixamo.com щелкнув на кнопку upload character.
- После окончания обработки разместим точки на модели для содания скелета.
- Перейдем в анимацию и выбирем нужные анимации: Idle (поза покоя), Run (бег), Walk (прогулка), Jump (прыжок) и другие необходимые, установите галочку In Place (на месте) и выгрузите данную анимацию в формате FBX для Unity.
- Для выгрузки модели: выгрузите модель в формате Collada With Skin далее выгружаем в формате FBX for Unity With Skin.
- Текстуры из Collata и файл fbx скидываем в одну папку, лишнее удаляем.
- В Unity создаем папку _players и выгружаем туда папку с нашим персонажем путем перетаскивания.
- Перетаскиваем персонажа на сцену.
- Создаем Animator Controller и перетягиваем на персонажа, его будем использовать позже.
- Создаем камеру для персонажа, выравниваем ее, ставим за спиной перонажа, помещаем камеру в песонажа.
- Добавляем на персонажа Character Controller, меняем параметры Center (X, Y, Z), Radius, Height чтобы персонаж (не учитывая вытянутые руки) был вписан в сферу.
- Добавляем элемент RigidBody (физика) на персонажа, устанавливаем массу персонажа, ставим галочки Freeze Rotation на X и Z. Если запустить игру без добавления скрипта персонаж провалится сквозь терейн, чтобы этого не происходило можно добавить Capsule Collider
- Добавляем скрипт:
using System.Collections;using System.Collections.Generic;using UnityEngine;public class PlayerController : MonoBehaviour{public float speed = 2f;float gravity = 20f;Vector3 direction;CharacterController controller;// Start is called before the first frame updatevoid Start(){controller = GetComponent<CharacterController>();}// Update is called once per framevoid Update(){float x = Input.GetAxis("Horizontal");float z = Input.GetAxis("Vertical");if (controller.isGrounded){//если на землеdirection = new Vector3(x,0f,z); //создаем верктор нажатых кнопокdirection = transform.TransformDirection(direction) * speed;//напраляем вектор по указанным осям}direction.y -= gravity * Time.deltaTime; // применяяем к оси y гравитациюcontroller.Move(direction*Time.deltaTime);//двигаем контроллер по нашему направлению}}
Добавляем скрипт к персонажу и тестируем. Дальше добавим анимацию к персонажу.