VoxelEngine/doc/ru/entity-properties.md
2025-09-12 07:46:44 +03:00

119 lines
5.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Свойства сущностей
## Логика
### Cписок компонентов - *components*
Определяет компоненты и порядок их инициализации.
```json
"components": [
список компонентов
]
```
Пример:
```json
"components": [
"base:drop"
]
```
Из конфигурации сущности можно передавать значения в ARGS.
Они будут передаваться как при создании новой сущности, так и при загрузке сохранённой.
Для этого используется список `args`:
```json
"components": [
{
"name": "base:drop",
"args": {
"item": "base:stone.item",
"count": 1
}
}
]
```
Код компонентов должен находиться в `scripts/components`.
## Физика
### Хитбокс - *hitbox*
Массив из трех чисел, указывающих размер хитбокса сущности.
Пример:
```json
"hitbox": [0.6, 1.8, 0.6]
```
### Тип тела - *body-type*
Определяет то, как с ним будет работать физический движок.
- *static* (статический) - физический движок не воздействует на тело.
- *dynamic* (динамический) - тип по-умолчанию. Физический движок просчитывает движение и столкновения.
- *kinematic* (кинематический) - просчитывается только движение, без столкновений.
### Блокирование - *blocking*
Определяет блокирует ли сущность установку блоков.
*В будущем будет также блокировать движение других сущностей.*
Значение по-умолчанию: *true*.
### Список сенсоров - *sensors*
Сенсор - область пространства, привязанная к физическому телу, детектирующее попадание в него других тел.
- При попадании тела вызывается событие *on_sensor_enter*.
- При покидании тела вызывается событие *on_sensor_exit*.
Сенсоры индексируются в том же порядке, в каком представлены в списке, начиная с 0.
Существуют следующие типы (формы) сенсоров:
- radius (радиус) - самый простой сенсор. Определяет область вокруг центра хитбокса. Указываются следующие значения:
- радиус - число.
- aabb (коробка) - прямоугольная область, меняющая положение в зависимости от поворота сущности. **Сама область не поворачивается.** Указываются следующие значения:
- три числа x, y, z минимального угла области.
- три числа x, y, z противоположного угла области.
Пример:
```json
"sensors": [
["aabb", -0.2, -0.2, -0.2, 0.2, 0.2, 0.2],
["radius", 1.6]
]
```
0. Прямоугольная область шириной, высотой и длиной в 0.4 м. с центром в 0.0.
1. Радиальная область с радиусом 1.6 м.
## Вид
### Имя скелета - *skeleton-name*
Значение по-умолчанию совпадает с именем сущности. Определяет то, какой скелет будет использоваться сущностью. См. [риггинг](rigging.md).
## Сохранение/загрузка
Кроме данных пользовательских компонентов, движок автоматически сохраняет данные встроенных: transform, rigidbody, skeleton.
Есть набор флагов, позволяющих указать какие данные будут сохранены, а какие нет.
(Указываются булевы значения)
| Название | Цель | По-умолчанию |
| ---------------------- | -------------------------------------------------------- | ------------ |
| save | сама сущность | true |
| save-skeleton-pose | поза скелета сущности | false |
| save-skeleton-textures | динамически назначенные текстуры | false |
| save-body-velocity | скорость движения тела | true |
| save-body-settings | измененные настройки тела <br>(type, damping, crouching) | true |