177 lines
5.8 KiB
Markdown
177 lines
5.8 KiB
Markdown
# Third Person Animator Setup
|
|
|
|
## Přehled
|
|
Animator systém je nyní plně integrován do `ThirdPersonCharacterController.cs` a má automatický generátor pro vytvoření Animator Controlleru z Kevin Iglesias animací.
|
|
|
|
## ⚠️ DŮLEŽITÉ - Pokud máte problémy s animacemi
|
|
|
|
Pokud animace pohybu trhají nebo jump animace nefungují:
|
|
|
|
1. **Smažte starý controller** (pokud jste ho už vytvořili)
|
|
2. **Vytvořte nový controller** s opraveným kódem (viz níže)
|
|
3. **Zkontrolujte Console** pro debug výpis všech nalezených animací
|
|
|
|
### Oprava provedena:
|
|
- ✅ Opraveno načítání animací z FBX souborů
|
|
- ✅ Opraveno použití skutečné rychlosti z CharacterController
|
|
- ✅ Opraveny jump transitions (Begin → Fall → Land)
|
|
- ✅ Přidán debug výpis pro kontrolu načtených animací
|
|
|
|
## Rychlý Start
|
|
|
|
### 1. Otevřete Auto Builder
|
|
V Unity menu: **MegaKoop → Animator → Auto Build Controller**
|
|
|
|
### 2. Vygenerujte Controller
|
|
- Okno automaticky najde všechny animace ve složce Kevin Iglesias
|
|
- Klikněte **"Najít Animace"** (nebo se načtou automaticky)
|
|
- **Zkontrolujte Console** - měli byste vidět "Načteno: [název animace] z [cesta]"
|
|
- Vyberte GameObject s `ThirdPersonCharacterController` v Hierarchy
|
|
- Zaškrtněte "Přiřadit na vybraný objekt"
|
|
- Klikněte na **Vytvořit Animator Controller**
|
|
|
|
### 3. Zkontrolujte Console
|
|
Měli byste vidět výpis všech načtených animací:
|
|
```
|
|
=== Vytváření Animator Controller ===
|
|
Idle: HumanM@Idle01
|
|
Walk Forward: HumanM@Walk01_Forward
|
|
Walk Backward: HumanM@Walk01_Backward
|
|
...
|
|
Jump Begin: HumanM@Jump01 - Begin
|
|
Jump Fall: HumanM@Fall01
|
|
Jump Land: HumanM@Jump01 - Land
|
|
```
|
|
|
|
### 4. Hotovo!
|
|
Controller je vytvořen a přiřazen. Animace budou fungovat automaticky.
|
|
|
|
## Co je zahrnuto
|
|
|
|
### Stavy Animatoru:
|
|
- **Idle** - Poklidový stav
|
|
- **Move** - 2D Blend Tree pro pohyb všemi směry (Forward/Backward/Left/Right + diagonály)
|
|
- **Crouch** - Dřep (stisknutím LeftControl)
|
|
- **Jump Begin** - Začátek skoku
|
|
- **Jump Fall** - Pád ve vzduchu
|
|
- **Jump Land** - Dopad
|
|
- **Death** - Smrt
|
|
|
|
### Parametry:
|
|
- **MoveX** (float) - Lokální X pohyb
|
|
- **MoveZ** (float) - Lokální Z pohyb
|
|
- **Speed** (float) - Rychlost postavy
|
|
- **IsGrounded** (bool) - Je na zemi
|
|
- **IsCrouching** (bool) - Dřepí
|
|
- **IsDead** (bool) - Je mrtvý
|
|
- **Jump** (trigger) - Spustí skok
|
|
|
|
## Použití v kódu
|
|
|
|
### Nastavení smrti:
|
|
```csharp
|
|
var controller = GetComponent<ThirdPersonCharacterController>();
|
|
controller.SetDead(true);
|
|
```
|
|
|
|
### Změna crouch klávesy:
|
|
V Inspectoru na `ThirdPersonCharacterController` změňte "Crouch Key".
|
|
|
|
## Nalezené animace
|
|
|
|
### Idle
|
|
- `HumanM@Idle01.fbx`
|
|
|
|
### Walk (všechny směry)
|
|
- `HumanM@Walk01_Forward.fbx`
|
|
- `HumanM@Walk01_Backward.fbx`
|
|
- `HumanM@Walk01_Left.fbx`
|
|
- `HumanM@Walk01_Right.fbx`
|
|
- `HumanM@Walk01_ForwardLeft.fbx`
|
|
- `HumanM@Walk01_ForwardRight.fbx`
|
|
- `HumanM@Walk01_BackwardLeft.fbx`
|
|
- `HumanM@Walk01_BackwardRight.fbx`
|
|
|
|
### Crouch
|
|
- `HumanM@Crouch01_Idle.fbx`
|
|
|
|
### Jump (3 fáze)
|
|
- `HumanM@Jump01 - Begin.fbx`
|
|
- `HumanM@Fall01.fbx`
|
|
- `HumanM@Jump01 - Land.fbx`
|
|
|
|
### Death
|
|
- `HumanM@Death01.fbx`
|
|
|
|
## Poznámky
|
|
|
|
- **Animator je přímo v ThirdPersonCharacterController** - není potřeba žádný driver
|
|
- **Automatické hledání animací** - stačí kliknout na tlačítko
|
|
- **Plná integrace** - funguje s existující movement logikou
|
|
- **Skok má 3 fáze** - Begin → Fall → Land pro realistický skok
|
|
- **2D Blend Movement** - plynulý přechod mezi všemi směry pohybu
|
|
|
|
## Řešení problémů
|
|
|
|
### Animace pohybu se zastaví po 1 sekundě
|
|
✅ **OPRAVENO** - Použití `CharacterController.velocity` místo `planarVelocity`
|
|
|
|
**Co dělat:**
|
|
1. Smažte starý Animator Controller asset
|
|
2. Vytvořte nový controller přes Auto Builder
|
|
3. Ujistěte se, že používáte aktuální verzi `ThirdPersonCharacterController.cs`
|
|
|
|
### Jump animace nefungují
|
|
✅ **OPRAVENO** - Přidány správné 3 fáze skoku a transitions
|
|
|
|
**Co kontrolovat:**
|
|
- V Animatoru musí být stavy: "Jump Begin", "Jump Fall", "Jump Land"
|
|
- Transitions: Begin → Fall (exit time 0.8) → Land (when IsGrounded)
|
|
- Zkontrolujte Console, že všechny 3 jump animace byly načteny
|
|
|
|
### Animace nejsou nalezeny
|
|
**Příznaky:** V okně Auto Builder jsou prázdná pole nebo Console ukazuje "Nelze najít FBX"
|
|
|
|
**Řešení:**
|
|
1. Zkontrolujte, že složka `Assets/Kevin Iglesias/Human Animations/Animations/Male` existuje
|
|
2. Zkontrolujte, že FBX soubory jsou v této struktuře:
|
|
- `Idles/HumanM@Idle01.fbx`
|
|
- `Movement/Walk/HumanM@Walk01_Forward.fbx`
|
|
- `Movement/Jump/HumanM@Jump01 - Begin.fbx`
|
|
- atd.
|
|
3. Klikněte na "Najít Animace" v Auto Builder okně
|
|
|
|
### Animace se nehrají vůbec
|
|
**Řešení:**
|
|
1. Vyberte GameObject v Hierarchy
|
|
2. V Inspectoru zkontrolujte:
|
|
- `Animator` komponenta existuje a má přiřazený Controller
|
|
- `ThirdPersonCharacterController.animator` není null (mělo by být auto-přiřazeno)
|
|
3. V Play mode otevřete Animator okno (Window → Animation → Animator)
|
|
4. Sledujte, jestli se mění parametry (MoveX, MoveZ, Speed)
|
|
|
|
### Animace se hrají, ale postavy se netočí správně
|
|
- Animace z Kevin Iglesias mohou mít Root Motion
|
|
- Zkontrolujte FBX Import Settings:
|
|
- Vyberte FBX soubor
|
|
- V Inspectoru → Rig → Animation Type: Humanoid
|
|
- Animation → Apply Root Motion (podle potřeby)
|
|
|
|
### Debug kroky
|
|
1. **Otevřete Console** při vytváření controlleru - měli byste vidět:
|
|
```
|
|
Načteno: HumanM@Idle01 z Assets/Kevin Iglesias/.../Idle01.fbx
|
|
Načteno: HumanM@Walk01_Forward z Assets/Kevin Iglesias/.../Walk01_Forward.fbx
|
|
...
|
|
```
|
|
|
|
2. **V Play mode sledujte Animator parametry:**
|
|
- Vyberte objekt
|
|
- Otevřete Animator okno
|
|
- Sledujte hodnoty MoveX, MoveZ, Speed při pohybu (WASD)
|
|
|
|
3. **Zkontrolujte rychlost:**
|
|
- V Inspectoru na `ThirdPersonCharacterController`
|
|
- `Move Speed` by měla být > 0 (default 5)
|
|
- `Animation Damping` by měla být malá (default 0.075)
|