NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze – Lekce 12 - Unity (C#) Android: Vylepšení pohybu nakláněním

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Josef Nosek
Člen
Avatar
Josef Nosek:17.3.2021 12:11

Ahoj, píšu sem z holého zoufalství. Mám 2D objekt (auto, mravenec) který potřebuji natočit ve směru pohybu. Tedy proceduru typu
private void otocDoSmeruPohybu( Vector2 smerPohybu, Gameobjekt telesoKOtoceni) { }.
Zkusil jsem všechno. Počítal jsem úhel natočení přes goniometrické funkce (Arkus cosinu získaného z rozdílu jednotkového a vektoru posunu), vyblbnul jsem si s převodem Rad na stupně než jsem zjistil že Unity na to má funkci :) a nic. Při použití transform to nefungovalo (Euler, Quat., Rad to není) vyzkoušel jsem rigidbody.rotation, taky to nešlo, Transform.LookAt, Vector3.Rotate­Towards (zase, převod 2d do 3d a zpátky snad rozumím správně; točím kolem Z-tové souřadnice). Nemá smysl sem dávat zdrojáky mých pokusů, je toho hromada. Sledování objektu není problém, ale přijde mi jako pitomost posílat před sebou prázdný objekt jen abych se na něj natočil.
Určitě to jde nějak jednoduše, ale já fakt nevím jak, točím se v kruhu... SOS SOS.. Dík, Pepa

Editováno 17.3.2021 12:12
 
Odpovědět
17.3.2021 12:11
Avatar
Jan Kubice
Tvůrce
Avatar
Odpovídá na Josef Nosek
Jan Kubice:23.3.2021 10:21

Ahoj,
omlouvám se, ale dřív na odpověď čas nebyl :-) .
Jestli jsi to ještě nevyřešil tak zkusím pomoct ale abych řekl pravdu tak tu sedím a čtu si to asi po 10. a nevím kde by mohl být problém. Pokud se jedná o objekt ovládaný hráčem tak bych klasicky reagoval na stisknutí klávesnice a dle toho měnil úhly, s tím by snad problém být neměl ale pokud se jedná například o NPC tak v tom případě mi využití jiného objektu nepřijde blbé. Takový objekt se může brát jako waypoint pro to NPC ke kterému musí dojít a to dle mého není nikterak špatně provedené. :-)

 
Odpovědět
23.3.2021 10:21
Avatar
Josef Nosek
Člen
Avatar
Josef Nosek:23.3.2021 11:19

Ahoj,
nevyřešil, zatím jsem to vzdal, dřív než mi hrábne, dělám na další části 8-(.
Jedná se o NPC řízená čistě skriptem ve 2D, během běhu aplikace mění směr pohybu.Po změně směru mám jen Vector2 kterým se NPC pohybuje.
Umím spočítat úhel proti jednotkové soustavě, tedy znám jak vektor pohybu, tak i úhel o který se otočit.
Problém je, že jsem nenašel jak otočit objekt do nějakého směru (vše v 2D, tedy točím kolem 'z'). Transform.rotation, rigidbody.rotation, Transform.LookAt, nic z toho jsem nerozchodil, není to úplně triviální. Třeba převod ze souřednic 2D na Quaternion pak transform.rotation s průmětem do plochy mi nešel, přes fyziku 'rigidbody' to má setrvačnost atd.

Určitě existuje nějaký triviální příkaz typu cosi.rotation(vek­tor2D kam chci otočit) ale ten nemůžu najít, proto jsem zavolal sos.. :D
Díky za čas, Pepa

 
Odpovědět
23.3.2021 11:19
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.