Skip to content

Commit a39f584

Browse files
committed
v7.3.2
1 parent faa62b9 commit a39f584

13 files changed

Lines changed: 284 additions & 8 deletions

File tree

Assets/Neoxider/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [7.3.2] - 2026-02-23
6+
7+
### Tools / Components
8+
9+
- **AnimatorParameterDriver** — имена параметров можно задать в переменных в инспекторе (Trigger/Bool/Float/Int Parameter Name); добавлены методы без имени параметра: **SetTrigger()**, **SetBool(bool)**, **SetFloat(float)**, **SetInt(int)** — имя берётся из соответствующего поля. Удобно для UnityEvent: кнопка вызывает SetTrigger(), значение передаётся в SetBool(bool) / SetFloat(float) / SetInt(int). Документация обновлена.
10+
511
## [7.3.1] - 2026-02-23
612

713
### Shop / Level / Components (patch)

Assets/Neoxider/Docs/NPC/Navigation/NPCNavigation.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@
7171
- `onStartFollowing`, `onStopFollowing`
7272
- `onSpeedChanged`
7373

74+
## Анимации
75+
76+
Чтобы аниматор NPC автоматически реагировал на движение (ходьба/бег по скорости агента), добавьте на тот же объект компонент **[NpcAnimatorDriver](../NpcAnimatorDriver.md)** и укажите Animator и имена параметров (по умолчанию `Speed`, `IsMoving`).
77+
7478
## Совместимость с AiNavigation
7579

7680
`AiNavigation` остаётся для старых проектов, но помечен как устаревший. Для новых проектов используйте `NpcNavigation`.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# NpcAnimatorDriver
2+
3+
Компонент **автоматического управления аниматором** NPC по скорости NavMeshAgent: в каждом кадре выставляет параметры **Speed** (float, 0..1) и **IsMoving** (bool). Добавьте на тот же объект, что **NpcNavigation** и **NavMeshAgent** — анимации ходьбы/бега будут включаться при движении без дополнительного кода.
4+
5+
## Поля
6+
7+
| Поле | Описание |
8+
|------|----------|
9+
| **Animator** | Animator для управления. Если не задан — берётся с этого объекта. |
10+
| **Speed Parameter** | Имя параметра Animator (Float): нормализованная скорость 0..1. По умолчанию `Speed`. |
11+
| **Is Moving Parameter** | Имя параметра Animator (Bool): движется ли агент. По умолчанию `IsMoving`. |
12+
| **Damp Time** | Время сглаживания перехода скорости (сек). |
13+
14+
## Требования к Animator
15+
16+
В контроллере аниматора должны быть параметры с выбранными именами:
17+
18+
- **Float** — для скорости (например переход Idle ↔ Walk по значению).
19+
- **Bool** — для «в движении» (опционально, можно использовать только Speed).
20+
21+
Имена по умолчанию: `Speed`, `IsMoving`. Если в вашем контроллере другие имена — задайте их в полях компонента.
22+
23+
## Использование
24+
25+
1. На объекте NPC: **NavMeshAgent**, **NpcNavigation**, **Animator** (на том же объекте или на детях).
26+
2. Добавьте **NpcAnimatorDriver** (Neoxider → NPC → NpcAnimatorDriver).
27+
3. При необходимости укажите **Animator** и имена параметров.
28+
4. Запустите сцену — при движении агента (патруль, преследование) аниматор будет получать обновления автоматически.
29+
30+
## Связанные компоненты
31+
32+
- **NpcNavigation** — навигация (патруль, преследование). NpcAnimatorDriver читает скорость из того же **NavMeshAgent**.
33+
- **NpcAnimationCore** — внутренняя логика (pure C#), используется внутри NpcAnimatorDriver.

Assets/Neoxider/Docs/NPC/NpcAnimatorDriver.md.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Neoxider/Docs/NPC/README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
# NPC
22

3-
Этот раздел содержит модульную систему NPC (подход «как Cinemachine»): добавляете компоненты‑модули на один объект — получаете новое поведение.
3+
Модульная система NPC: добавляете компоненты на один объект — получаете навигацию, анимации и т.д.
44

5-
## Разделы
5+
## Компоненты
66

7-
- [Navigation](./Navigation/NPCNavigation.md)
7+
- **[NpcNavigation](./Navigation/NPCNavigation.md)** — навигация (Follow / Patrol / Combined).
8+
- **[NpcAnimatorDriver](./NpcAnimatorDriver.md)** — автоматическое управление аниматором по скорости NavMeshAgent (параметры Speed и IsMoving). Добавьте на тот же объект, что NpcNavigation и Animator — анимации ходьбы/бега включаются при движении.
89

910

1011

Assets/Neoxider/Docs/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Neoxider Docs — документация и навигация
22

3-
Добро пожаловать в документацию **NeoxiderTools** (v7.3.1). Ссылки на модули и инструкции по запуску.
3+
Добро пожаловать в документацию **NeoxiderTools** (v7.3.2). Ссылки на модули и инструкции по запуску.
44

55
- **[Полезные компоненты (Add Component / GameObject)](./UsefulComponents.md)** — что удобно добавлять через меню **Neoxider/** (UI, Tools, Shop, Audio, Bonus и т.д.).
66
- **[Новые скрипты и улучшения для функциональности](./NEXT_IMPROVEMENTS.md)** — идеи для следующих релизов (ValueDisplay, интеграции Shop+Inventory, ToggleByIndex и др.).
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# AnimatorParameterDriver
2+
3+
Компонент для **удобного изменения параметров Animator** из кода и через UnityEvent: триггер, bool, float, int. Имя параметра можно задать в переменной в инспекторе — тогда метод принимает только значение (удобно для UnityEvent).
4+
5+
## Поля
6+
7+
| Поле | Описание |
8+
|------|----------|
9+
| **Animator** | Целевой Animator. Если не задан — берётся с этого объекта. |
10+
| **Trigger Parameter Name** | Имя триггера для метода **SetTrigger()** без аргумента. |
11+
| **Bool Parameter Name** | Имя bool-параметра для **SetBool(bool)**. |
12+
| **Float Parameter Name** | Имя float-параметра для **SetFloat(float)**. |
13+
| **Int Parameter Name** | Имя int-параметра для **SetInt(int)**. |
14+
15+
## API
16+
17+
**Методы с именем в переменной** (имя задаётся в инспекторе, метод — только значение):
18+
19+
| Метод | Описание |
20+
|-------|----------|
21+
| **SetTrigger()** | Вызвать триггер из поля Trigger Parameter Name. |
22+
| **SetBool(bool value)** | Установить bool по полю Bool Parameter Name. |
23+
| **SetFloat(float value)** | Установить float по полю Float Parameter Name. |
24+
| **SetInt(int value)** | Установить int по полю Int Parameter Name. |
25+
26+
**Методы с именем в аргументе**:
27+
28+
| Метод | Описание |
29+
|-------|----------|
30+
| **SetTrigger(string triggerName)** | Вызвать триггер по имени. |
31+
| **SetBool(string parameterName, bool value)** | Установить bool-параметр. |
32+
| **SetBoolTrue(string parameterName)** / **SetBoolFalse(string parameterName)** | Установить bool = true/false. |
33+
| **SetFloat(string parameterName, float value)** | Установить float-параметр. |
34+
| **SetInt(string parameterName, int value)** | Установить int-параметр. |
35+
36+
## Пример: имя в переменной
37+
38+
В инспекторе задайте **Trigger Parameter Name** = `"Attack"`. Тогда из кнопки или кода можно вызвать **SetTrigger()** без аргументов — сработает триггер "Attack". Аналогично: **Bool Parameter Name** = `"IsRunning"` и вызов **SetBool(bool)** — в UnityEvent передаёте только значение (true/false).
39+
40+
```csharp
41+
driver.SetTrigger(); // триггер из triggerParameterName
42+
driver.SetBool(true); // bool из boolParameterName
43+
driver.SetFloat(1.5f); // float из floatParameterName
44+
driver.SetInt(2); // int из intParameterName
45+
```
46+
47+
## Пример: имя в аргументе
48+
49+
```csharp
50+
driver.SetTrigger("Attack");
51+
driver.SetBool("IsRunning", true);
52+
driver.SetFloat("Speed", 1.5f);
53+
driver.SetInt("State", 2);
54+
```
55+
56+
Имена параметров должны совпадать с именами в окне Animator (Parameters).

Assets/Neoxider/Docs/Tools/Components/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
## Файлы
66

7+
- [AnimatorParameterDriver](./AnimatorParameterDriver.md) — вызов параметров Animator (триггер, bool, float, int) из кода и UnityEvent.
78
- [UnityLifecycleEvents](./UnityLifecycleEvents.md) — проброс событий жизненного цикла Unity (Awake, OnEnable, OnDisable, Start, Destroy, Update/FixedUpdate/LateUpdate с deltaTime) в UnityEvent
89
- [Counter](./Counter.md) — универсальный счётчик (Int/Float), Add/Subtract/Set, Send по Payload или произвольное число, OnValueChanged/OnSend
910
- [TextScore](./TextScore.md) — отображение очков (ScoreManager): текущий счёт или рекорд, без кода
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
using Neo.NPC.Navigation;
2+
using UnityEngine;
3+
using UnityEngine.AI;
4+
5+
namespace Neo.NPC
6+
{
7+
/// <summary>
8+
/// Автоматически гонит аниматор NPC по скорости NavMeshAgent: параметры Speed (float) и IsMoving (bool).
9+
/// Добавьте на тот же объект, что NpcNavigation и NavMeshAgent; при наличии Animator анимации ходьбы/бега будут включаться по движению.
10+
/// </summary>
11+
[NeoDoc("NPC/NpcAnimatorDriver.md")]
12+
[CreateFromMenu("Neoxider/NPC/NpcAnimatorDriver")]
13+
[RequireComponent(typeof(NavMeshAgent))]
14+
[AddComponentMenu("Neoxider/NPC/" + nameof(NpcAnimatorDriver))]
15+
public sealed class NpcAnimatorDriver : MonoBehaviour
16+
{
17+
[SerializeField]
18+
[Tooltip("Animator для управления. Если не задан — берётся с этого объекта.")]
19+
private Animator animator;
20+
21+
[SerializeField]
22+
[Tooltip("Имя параметра Animator: нормализованная скорость (0..1).")]
23+
private string speedParameter = "Speed";
24+
25+
[SerializeField]
26+
[Tooltip("Имя параметра Animator: движется ли агент.")]
27+
private string isMovingParameter = "IsMoving";
28+
29+
[SerializeField]
30+
[Min(0f)]
31+
[Tooltip("Время сглаживания перехода скорости (сек).")]
32+
private float dampTime = 0.1f;
33+
34+
private NpcAnimationCore _core;
35+
private NavMeshAgent _agent;
36+
37+
private void Awake()
38+
{
39+
_agent = GetComponent<NavMeshAgent>();
40+
if (animator == null)
41+
animator = GetComponent<Animator>();
42+
if (animator != null && _agent != null)
43+
_core = new NpcAnimationCore(_agent, animator, speedParameter, isMovingParameter, dampTime);
44+
}
45+
46+
private void Update()
47+
{
48+
_core?.Tick(Time.deltaTime);
49+
}
50+
}
51+
}

Assets/Neoxider/Scripts/NPC/NpcAnimatorDriver.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)