Zpět na domů

Steering Behaviors v Unity: navigace agentů

Článek popisuje použití Steering Behaviors pro navigaci rybích agentů v podvodním 3D-laborintu Unity. Jsou detailně popsány algoritmy seek, pursuit, evade s matematickými vzorci. Přístup zajišťuje plynulý, reaktivní pohyb bez globálního plánování cest.

Navigace agentů Steering Behaviors v Unity 3D
Advertisement 728x90

Implementace Steering Behaviors pro navigaci agentů v Unity 3D

Steering Behaviors zajišťují reaktivní navigaci autonomních agentů v dynamických prostředích. V projektu Unity se agenti – ryby tří typů – pohybují v podvodním labyrintu a reagují na hráčovu ponorku. Každý typ využívá kombinaci základních chování: seek, pursuit, evade, wander a collision avoidance. To umožňuje vytvářet plynulé trajektorie bez globálního pathfindingu.

Přístup se opírá o lokální vektorové výpočty v každém snímku. Agent upravuje rychlost a orientaci podle požadovaného směru s ohledem na cíle, hrozby a překážky. Kombinace jednoduchých pravidel generuje složitý, přirozený pohyb.

Základní typy Steering Behaviors

Steering Behaviors se dělí na základní typy implementované pomocí vektorové matematiky:

Google AdInline article slot
  • Seek: výpočet vektoru z pozice agenta k cíli, normalizace a použití jako požadovaného směru rychlosti.
  • Pursuit: predikce pozice cíle podle rychlosti a směru, seek k předpovězenému bodu.
  • Evade: pursuit v opačném směru od předpovězené pozice hrozby.
  • Wander: základní směr s náhodnými odchylkami v rámci disku o poloměru na kouli před agentem.
  • Collision avoidance: skenování paprsků vpřed, odklon od nejbližší překážky.

Tato chování se sčítají s váhami pro výslednou steering force, omezenou maximální silou.

V podvodním prostředí je collision avoidance klíčové kvůli stěnám labyrintu. Wander přidává variabilitu pro jedlé ryby mimo zónu ponorky.

Modely chování agentů-ryb

Ryby se dělí na jedlé, nebezpečné a jedovaté. Každý typ odpovídá algoritmu založenému na Steering Behaviors:

Google AdInline article slot
  • Následování (pro všechny typy v počáteční fázi): seek k ponorce s malým náhodným šumem pro vyhnutí se linearitě.
  • Pronásledování (nebezpečné/jedovaté): pursuit s plynulým vyhlazením směru.
  • Vyhýbání (jedlé): přechod od seek k evade + boční offset při vstupu do interakční zóny.

Plynulost zajišťuje interpolace aktuálního a požadovaného směru s koeficientem α ∈ [0,1]. Rychlost je omezena v_max, zohledňuje se čas života t_life ≤ T_max.

Matematická implementace algoritmů

Označení:

  • x_s — pozice ponorky
  • x_f — pozice ryby
  • v_f — rychlost ryby
  • Δt — časový krok
  • R — poloměr zóny
  • v_max — max. rychlost
  • u — up-vektor
  • t_life — čas života
  • T_max — max. čas života

Vzdálenost: d = ||x_s - x_f||

Google AdInline article slot

Jednotkový vektor k cíli: e_t = (x_s - x_f) / ||x_s - x_f||

Následování

d = ||x_s - x_f|| > R

e_follow = e_t

Se šumem: e_follow = normalize(e_follow + k_r r), kde r — náhodný vektor ||r|| < ε

Pronásledování

e_p = e_t

Vyhlazené: e_new = normalize((1-α) e_cur + α e_p)

v_f = v_max * e_new

Vyhýbání

Pokud d > R: e = e_follow*

Jinak: e_evade = -e_t + lateral_offset (kolmý u × e_t)

v_f = v_max * normalize(e_evade)

Aktualizace pozice: x_f += v_f * Δt

Tyto vzorce se integrují do Update() agenta v Unity. Collision avoidance se přidává jako prioritní steering force při detekci raycast-ů.

Integrace do Unity a optimalizace

V Unity implementace využívá Transform pro pozici/rotaci, Rigidbody pro fyziku (volitelně). Steering force se aplikuje přes AddForce nebo přímé nastavení velocity.

Klíčové aspekty výkonu:

  • Lokální výpočty bez navmesh.
  • Omezení raycastů pro avoidance (3-5 paprsků v kuželu).
  • Pooling ryb pro spawn/despawn.

Chování se přizpůsobuje 3D labyrintu: vertikální pohyby zohledňují u-vektor, překážky — stěny z Collider.

Pro senior-vývojáře: rozšiřte model o arrival (zpomalení u cíle), separation (vzdálenost mezi agenty), cohesion/flocking pro skupiny ryb.

Co je důležité

  • Lokalita: Steering Behaviors se vyhýbají náročnému A*-plánování, hodí se pro 50+ agentů.
  • Kombinovatelnost: sčítání sil s váhami umožňuje vrstvení chování (wander + seek + avoid).
  • Reaktivita: okamžitá adaptace na pohyb ponorky bez replanningu.
  • Plynulost: interpolace zabraňuje jitteru, realistické pro podvodní prostředí.
  • Rozšiřitelnost: snadno přidat leader-following nebo group behaviors.

— Editorial Team

Advertisement 728x90

Číst dál