# live2d_characters

**Тип:** [список](https://docs.lmr.su/books/gaid-po-moddingu/page/spiski "Списки")

В этом ноде определяются Live2D-спрайты персонажей.

Так же, как и в случае со [статичными спрайтами](https://docs.lmr.su/books/gaid-po-moddingu/page/characters "characters"), каждый спрайтовый нод может содержать следующие параметры:

- `poses`
- `positions`
- `sizes`
- `spritecolor`
- `shortnames`
- `default`

Все параметры, кроме `poses`, идентичны параметрам статичных спрайтов, поэтому здесь будут рассмотрены только отличия.

Кроме того, Live2D спрайты также могут содержать параметр `layers` с информацией об анимационных слоях — синтаксис этого параметра также будет рассмотрен.

### layers

**Тип:** [список](https://docs.lmr.su/books/gaid-po-moddingu/page/spiski "Списки")

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

Слои делятся на два типа:

- Основные
- Вспомогательные

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

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

Определение слоёв и анимаций происходит в редакторе Unity, этот процесс рассмотрен в [отдельной статье](https://docs.lmr.su/books/gaid-po-moddingu/page/import-live2d-modelei "Импорт Live2D-моделей"). В этой же статье будет рассмотрен процесс определения слоёв и анимаций в файле ресурсов мода, чтобы их можно было использовать внутри сценария.

Рассмотрим процесс определения нескольких слоёв:

```
# resources.yaml
---
live2d_characters
  saya:
    layers:
      emotions:
        - normal
        - smile
        - sad
      hands:
        - hands1
        - hands2
        - hands3
      ~shake:
        - head
```

Здесь определяются 3 слоя — `emotions`, `hands` и `shake`. Первые два — основные слои, для эмоций и положения рук соответственно, последний — вспомогательный. Внутри нодов слоёв прописаны названия анимаций, которые этот слой содержит.

<p class="callout info">Для определения вспомогательного слоя нужно перед его именем поставить символ `~`.</p>

### poses

**Тип:** [список](https://docs.lmr.su/books/gaid-po-moddingu/page/spiski "Списки")

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

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

- `positions`
- `sizes`
- `spritecolor`
- `default`

Также им доступны два новых параметра:

- `skins`
- `layers`

`layers` внутри позы определяет слои и анимации, действительные только для этой позы (или перезаписывает их, если слой с таким же названием прописан для всего спрайта в целом).

`skins` же — аналог parts статичных спрайтов, в нём прописываются пути Live2D-префабов спрайта.

#### **skins**

**Тип:** [список](https://docs.lmr.su/books/gaid-po-moddingu/page/spiski "Списки")  
**Тип принимаемых ассетов**: `prefab`

Синтаксис достаточно прост, внутри нода прописываются пути к префабам Live2D моделей:

```yaml
# resources.yaml
---
live2d_characters:
  saya:
    poses:
      front:
        skins:
          school_unfiform: ~@[bundle]://characters/saya/front/school_uniform/model.prefab # путь к префабу внутри каталога
```

#### **Краткая форма записи**

Ноды `poses` и `skins` необязательно указывать явно, если вы не намереваетесь использовать какие-либо другие параметры.

Допустим, тот же пример с определением позы `front` и скина `school_uniform` можно записать так:

```yaml
# resources.yaml
---
live2d_characters:
  saya:
      front:
          school_unfiform: ~@[bundle]://characters/saya/front/school_uniform/model.prefab # путь к префабу внутри каталога
```

Если бы мы захотели указать какие-то позиции, размеры, слои анимации и прочее — необходимо было бы явно указывать названия нодов.

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

```yaml
# resources.yaml
---
live2d_characters:
  saya:
    layers:
      emotions:
        - normal
        - smile
        - sad
      hands:
        - hands1
        - hands2
        - hands3
    positions:
      center: 0 -0.25
    poses:
      front:
          school_unfiform: ~@[bundle]://characters/saya/front/school_uniform/model.prefab # путь к префабу внутри каталога
```

Т.к. нод спрайта содержит не только позы, но и другие параметры, нам нужно явно указать название нода с позами. Внутри же нода позы `front` никаких других параметров, кроме скинов, нет — поэтому названием нода `skins` можно пренебречь. Если бы нужно было указать какие-то дополнительные параметры для позы `front`, скины бы прописывались внутри нода `skins`.