1. Моделирование персонажа. Делаем персонажа простого, чтобы и анимировать его было просто.
2. Раскрашиваем персонажа материалами
3. Создание скелета
если симметрия костей происходит не по той оси, то лучше всего просто повернуть вашего персонажа по оси z на 90 градусов
4. Анимация. Делаем две анимации, на одном таймлайне. Анимация дыхания (Idle) - оно и движение - и анимация действия (Action).
Idle обязательно должен быть цикличным, то есть первый кадр, равен последнему. То же самое лучше сделать и с Action. МЕНЯЕМ ПОЛОЖЕНИЕ КОСТЕЙ И СТАВИМ КЛЮЧИ ТОЛЬКО ПО ПОВОРОТУ (ROTATION)
a) В режиме Pose Mode сначала ставим в первоначально положение кости. Выделяем все кости скелета (A) и ставим ключевой кадр по повороту (первый). Курсор в 3D-View, нажимаем I->Rotation
б) Меняем текущий кадр, меняем положения для костей, фиксируем новым ключевым кадром. На картинке про одно ушко, надо сделать для второго, только с углом -15 градусов. Или у вас может углы наоборот.
в) копируем первый ключевой кадр в последний.
д) то же самое сделать и для Action дальше по таймлайну. Ключи ставьте на ровные кадры, чтобы их легко было запомнить. Ключи в Dope Sheet можно перемещать с помощью клавиши G или скейлить расстояние между ключами с помощью S.
5. Экпорт из blender и импорт в Unity.
Для начала удалите из сцены все лишнее. Камеру и источник света. Теперь экпортируем файл в формат fbx
В Unity можно fbx перетащить из папки проводника в Project либо перейти в Assets->Import Assets и там найти своего персонажа
5. Натсройки анимаций
Не забываем, что Idle цикличная анимация, ставим галочку Loop Time
Применяем все изменения. Кнопка Apple внизу, либо Unity сам предложить вам это сделать
|
Вид префаба изменился. Появились наши клипы.
6. Воспроизведение анимации дыхания в игре.
В Project нажимаем ПКМ и создаем Аниматор КОнтроллер
Называем его соответсвенно. Вытаскиваем персонажа в сцену. Выделяем персонажа и назначаем в компонент Аниматор, напротив параметра контроллер созданный нами аниматор. Либо перетаскиваем его напротив этого парметра из Project.
Настроить Action добавить связи это дз. Пока их делать не надо.
7. Настройка персонажа в сцене. Add Component и в поисковике вбиваем компоненты: Box Collider, Box Collider, Rigid Body. Настраиваем Box Collider’ы
.
8. Настройка платформы.
8. Скрипт движения персонажа.
Создаем скрипт PlayerController
Текст:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController: MonoBehaviour {
public Camera cam; //переменная камеры, чтобы камера двигалась за нами но не вертилась вместе с персом
bool ground;//переменная определяет на земле мы или нет
Rigidbody rb;//переменная хранит данные физики, нужна для прыжка, так как прыжок это задание какого-то ускорения вверх
void Start () {
rb=GetComponent<Rigidbody>();//инициализируем необходимые переменные
}
// Update is called once per frame
void Update () {
transform.position += Vector3.forward * Input.GetAxis ("Horizontal")* 0.3f;//перемещение вперед назад, 0.3f скорость движения
//хоризонтал хранит события нажатие кнопок A и D и стрелочек влево вправо
if (ground&&Input.GetKeyDown(KeyCode.W)) {//если нажата W
rb.AddForce (transform.up * 5f, ForceMode.Impulse);//прыжок. 5f сила прыжка
}
cam.transform.position = new Vector3(transform.position.x+10, transform.position.y, transform.position.z);//перемещение камеры.
//+10 смещение камеры по X
//можно изменить смещение и добавить смещения и по другим осям
|
}
void OnTriggerEnter (Collider col)//когда касаемся земли
{
if (col.tag == "Ground") {
ground = true;//на земле
}
}
void OnTriggerExit(Collider col)//когда подпрыгиваем
{
if (col.tag == "Ground") {//не на земле.
ground = false;
}
}
}
Скрипт назначаем на персонажа. Напротив параметра Cam указываем камеру в сцене. (Ее можно перетащить из Hierarchy)